Projekt SmartHome auf I2C-Basis

(Firma: www.twipnet.ch/) Persönliche Seite #1364387
Lesenswert?

Sch.... Riesen Text verfasst, auf Tab gerutscht (aus Textfeld), 
irgendwie <- gedrückt und so auf die vordere Page gekommen, doll 
geflucht und wieder vorwärts gedrückt... selbstverständlich der ganze 
Text weg!

Also hier nochmal die Kurzfassung:

Habe angefangen ein Bussystem aufzuziehen (i2c) und damit die Wohnung zu 
automatisieren.

Zentrale wird ein CuTouch CT7210, aus dem Amiland importiert.

Später wird der Webserver angebunden, so das alles auch über inet und 
wap gesteuert und abgerufen werden kann.

Ich werde in diesem Tread laufend neue Infos reingeben, Pläne posten, 
ideen Vorstellen u.s.w.

Freue mich über Anregungen und Ideen, auch über Kritiken.

Grüsse aus der Schweiz

Yvo
Gast #1373568
Lesenswert?

Bei zu langen Kabeln wird die Kapazität auf der Leitung zu groß. Dann 
müsste man mit der Datenrate runtergehen.
Was helfen kann: Pullup-Widerstände verkleinern (aber nicht zu klein!), 
Leitungen kapazitätsarm machen
(Firma: www.twipnet.ch/) Persönliche Seite #1374091
Lesenswert?

Das mit der Kabellänge sollte ich schon in den Griff bekommen...
Ich werde mit dem P82B715 arbeiten:

https://www.distrelec.com/distrelec/datasheets.nsf/WebAttachments/58B8B040C841D8EDC12570EB0078E5EC/$File/P82B715_e.pdf

Mein Schaltplan wird folgen...

Momentan bin ich aber an einem anderen Problem, ich weiss, ich arbeite 
von der falschen Seite her :)

Bin an der Datenübertragung zwischen dem Webserver und dem Master am 
verzweifeln. Die kommunikation über RS232 funzt tadellos. Ein 
perl-script auf dem OpenBSD-Webserver wartet auf Daten und wertet diese 
aus. Ebenfals kann er eine Anfrage an den CuTouch (i2c-Master) wenden, 
die dann auch sauber beantwortet wird.

Wenn ich jedoch auf der PHP-Website einen Status (z.B. Licht im 
Schlafzimmer AUS) ändere, wie bewege ich den Server dazu das dem Master 
mitzuteilen?

PHP-befehl exec () will nicht... Ich denke hab jetzt Google zu 
todegesucht, jedoch bei allen geht zB exec ('ls') aber ein bestimmtes 
script nicht, bei mir geht nichtmal ls oder pwd...

Ideen?


1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html>
3
<head>
4
<title>test</title>
5
</head>
6
<body>
7
<?php
8
echo '<pre>';
9

10
// Gibt das gesamte Ergebnis des Shellkommandos "ls" aus und hält als
11
// Rückgabewert die letzte Zeile dieser Ausgabe in $last_line. Der
12
// Rückgabewert des Shellkommandos wird in $retval gespeichert.
13
$last_line = system('ls', $retval);
14

15
// Ausgeben zusätzlicher Informationen
16
echo '
17
</pre>
18
<hr />Letzte Zeile der Ausgabe: ' . $last_line . '
19
<hr />Rückgabewert: ' . $retval;
20
?>
21

22
</body>
23
</html>
(Firma: www.twipnet.ch/) Persönliche Seite #1374106
Lesenswert?

Hier das perl-script:

Es sendet einfach nur "a" und horcht dann 1s auf dem RS232, der CuTouch 
gibt den Wert eines Timers retour, der wird in ein file geschrieben und 
auch angezeigt. Zudem schaltet der CT die Bildschirmbeleuchtung an und 
schribt "Test". Klappt wunderbar wenn ich es aus der shell starte, 
startet jedoch nicht via PHP :(

1
#!/usr/bin/perl -w
2

3
# Requires Device-Serial per module.
4
use Device::SerialPort 0.05;
5
use strict;
6

7
my $Temptrax = "/dev/cua00";
8
my $pass;
9
my $return;
10

11
# Constructor & Basic Values
12

13
my $ob = Device::SerialPort->new ($Temptrax) || die "Can.t open $Temptrax:$!";
14

15
$ob->baudrate (9600) || die "fail setting baudrate";
16
$ob->parity ("none") || die "fail setting parity";
17
$ob->databits (8) || die "fail setting databits";
18
$ob->stopbits (1) || die "fail setting stopbits";
19
$ob->handshake ("none") || die "fail setting handshake";
20
$ob->dtr_active (1) || die "fail setting dtr_active";
21

22
$ob->write_settings || die "no settings";
23

24

25

26
#send a dummy character to the TempTrax device to "wake it up"
27
#The temperature will be returned
28

29
$pass = $ob->write("a") or die ("Could not write to Temptrax: $!");
30

31
sleep 1;
32

33
if (($return = $ob->input) ne "")
34
{
35
   my $cmd;
36
   $cmd = "echo $return >> /var/www/htdocs/twipnet/autohome/return";
37
   system $cmd;
38
   print "$return";
39
}
40
else
41
{
42
   print "ERROR!! Did not receive a temperature reading from TempTrax.\n";
43
}
44

45
undef $ob;
46
my $cmd;
47
        $cmd = "tail /var/www/htdocs/twipnet/autohome/tst >> /dev/cua00";
48
system $cmd;
(Firma: www.twipnet.ch/) Persönliche Seite #1377566
Lesenswert?

Ciao zäme.

@ TravelRec.
Funk und Lichtwellen kommt mir zu teuer zum "basteln" und zudem ist dies 
zu Fehleranfällig. Nicht Fehler im Sinne der Übertragung, sondern der 
Implementierung bei meinen bescheidenen Kenntnissen.
Dass ich irgendwas CAN-Bus-ähnliches nehmen sollte ist mir klar und oft 
genug gesagt worden. Doch ist auf meinem Master (CuTouch) I2C 
hardwareseitig integriert, nicht jedoch CAN. Da dieser eh zu lahm ist 
kommt eine softwareimplementierung nicht in Frage. Aus kostengründen 
werde ich sowieso Cat5 verlegen, also kann ich nach meinem 
I2C-TryAndError-Versuch immer noch umsteigen...

@all
Das Problem mit dem Server konnte ich lösen, allerdings seeehr unschön.
Da der Apache chrootet ist griff das CGI nicht auf /usr/bin/perl sondern 
theoretisch auf /var/www/usr/bin/perl zu, was natürlich nicht klappte. 
Hab also alles was benötigt wurde ins chroot kopiert, aber habs nicht 
geschaft aus dem chroot auf RS232 zuzugreifen. BSD-kundige wissen was 
ich getan habe...sorry! ^^

http://www.twipnet.ch/autohome/ zeigt es

Ablauf:

Aufruf der index.php -> exec der cat.cgi, dem perlscript von oben
perl sendet "a" auf cua00 (RS232) an Cutouch und wartet 1s auf antwort
CuTouch nimmt input, Aha, "a", sendet also einen Timerwert retour
perl printet wert in ein file /retour und print an webseite

Auf dieser Basis will ich Eine Website basteln die es mir erlaubt alles 
anzusteuern, bzw Daten auszulesen.
Gast #1377637
Lesenswert?

Ich sag nur lol!

IIC für einen Hausbus....Warum nennt man das bloss Inter-Integrated 
Circuit... Hmmmmm....

Ich will mir einen Apfelkuchen backen. Äpfel habe ich aber leider nicht, 
nur Kirschen. Nagut, dann backe ich mir halt ein Apfelkuchen mit 
Kirschen....

I²C als Bussystem ist meiner Meinung nach ein absolutes No-Go.
(Firma: Embedit Mikrocontrollertechnik) #1377679
Lesenswert?

Wieso will man für sowas I2C quälen? Womöglich noch die ungeschirmten 
(weil kapazitätsarmen) Leitungen parallel zu den 230V Leitungen.

Das ist ja fast so schlimm wie damals, als ich mich mit 1-Wire über 
mehrere Meter und Steckkontakte quälen musste.

Nimm RS485. Das ist unempfindlicher, man kommt damit weiter bei höheren 
Baudraten und der UART ist, wie ich finde, einfacher zu programmieren 
als TWI. Außerdem kommt man mit RS485 einfacher in einen PC, zb mit 
einem FT232RL im RS485 Modus
(Firma: www.twipnet.ch/) Persönliche Seite #1383528
Lesenswert?

Tiptop, alles Material da, gemerkt dass ich zu viel bestellt habe, habe 
also noch einen 5V-Regler + Peripherie zuviel. Hab die Masterplarine 
gelötet, allerdings würde sich jeder der mal gelötet hat im Grab 
umdrehen sähe er das^^
Das Ausgangssignal am CT ist nahezu Perfekt, jenes am Ausgang des 715 
genauso, noch ein bischen die schärferen Flanken...
Montiere jetzt mal 100m Cat5 un Messe nochmal...
Gast #1383766
Lesenswert?

Dann roll jetzt nochmal die Schnur vom Staubsauger um die Trommel und 
werf den mal an. Wenns dann immernoch funktioniert, herzlichen 
Glückwunsch, wenn nicht, leg das Kabel 20 cm von allem was aussieht wie 
ein Stromkabel weg.
Persönliche Seite #1384484
Lesenswert?

Ich kenne eine Firma die Mobilfunk-Infrastruktur herstellt, die i2c 
sogar zwischen getrennten Einzelgeräten als Steuerbus in ganz großem 
Stil/Menge verwendet. Aus den Rückläufern der steuernden 
Mikrocontroller-Platinen weiß ich aber, das das nicht zuverlässig ist. 
In kleinem Stil für zuhause, wenn es nicht sicherheitsrelevant ist, ist 
sowas machbar.
Die benutzen übrigens auch den 715. Ist halt ein teurer Chip. Mit CAN 
würdest du im Endeffekt billiger laufen.


Gruß -
Abdul
(Firma: www.twipnet.ch/) Persönliche Seite #1387609
Lesenswert?

Über CAN habe ich mich schlau gemacht, zumindest versucht, aber ich habs 
nicht begriffen. Ganz ehrlich...
Die Datenübertragung ist mir klar, aber wie integriere ich die 
Controller in mein Projekt? Wie muss ich CAN ansteuern?
Ich habe mich für I2C entschieden weil ich so einfache Slaves habe, DA, 
AD, 8x I/O, u.s.w.
Gibts das auch für CAN? Oder müsste ich da zwingend AVR o.Ä. benutzen?
Mein CuTouch hat interne I2C-Routinen, für CAN müsste ich eine 
Softwareansteuerung proggen, richtig?

http://twipnet.ch/TwipHome/

U: mC
PW: Demo

zur Info: Das Licht im Bad ist momentan eine LED die ihr Live 
ein/ausschalten könnt. Werde später selbstverständlich unter diesem User 
keine Aktionen mehr zulassen^^
Persönliche Seite #1387620
Lesenswert?

Für CAN gibt es fertige I/O-Controller. Gabs zumindest mal, SAJ1100 oder 
so.

Ich persönlich würde, wenn denn getrennter Bus von 230V-Netz, RS485 mit 
UART benutzen. Jeder Microcontroller hat UART und RS485 ist zuverlässig 
und billig.

Für die Zukunft könnte Ethernet interessant sein.


Aber offensichtlich hast du bereits implementiert. Dann bleib dabei.


Gruß -
Abdul
Gast #1388902
Lesenswert?

> Was genau ist gruselig?

Ich denke travelrec meint nicht die Schaltung ansich, sondern den 
Schaltplan.
- Unnötige Überkreuzungen von Leiterbahnen
- Keine Verwendung von Massesymbolen
- ...

Ich dachte mir übrigens was ganz ähnliches, als ich den Schaltplan 
gesehen habe.
(Firma: www.twipnet.ch/) Persönliche Seite #1394667
Lesenswert?

Sooo. Hab am Donnerstag das Auto in den Service gegeben und desshalb 
mehr als genug Zeit gehabt.

Folgendes hab ich gemacht:

Masterschaltung in eine Box gepackt, Kabel zugfest montiert. Schalter 
integriert (DC-Supply). Buskabel RJ45 männlich.

Cat5 durch die Wohnung gezogen. Derjenige der damals (das Haus ist fast 
100) die Leitungen gezogen hat...*%&+" Die Rohre! sind zwar verlegt, 
kreutzen und enden aber irgendwo unterputz und ohne Dose:s Desshalb hab 
ich mich grösstenteils auf die Fussleisten verlassen. Wo nötig (Master, 
Aquarium) hab ich eine modifizierte (- R) ISDN-Dose montiert (RJ45).

Aquarium verkabelt und I2C-Schaltung von Horter "vergewaltigt" und in ne 
Box gesteckt. Schaltplan folgt. Benutze Triacs, bin somit besser auf ne 
Dimmerschaltung vorbereitet...

Webseite: Zugriff auf twipnet.ch für Benutzer "mC" mit pw "Demo" 
eingeschränkt, d.h. keine Änderungen mehr möglich. Wurde von euch 
nämlich rege genutzt, hatte teilweise ne funny Disco @ home^^

mC: Jetzt voll funktionsfähig.

i2C rules^^

Bis jetzt funktionsfähig:

-Aquarium 2 verschiedene Röhren Ein/Aus
-Drehlicht Alarm Ein/Aus
-Lampe Ein/Aus
-Flusssensor


Grüsse aus der Schweiz.
#1395982
Lesenswert?

Hi Yvo,

ich habe ein ähnliches Projekt. Mir ist gerade aufgefallen, dass du auch 
mit einer Grundrissdarstellung arbeitest, dazu habe ich 2 Tipps für dich 
(Sourcen kann ich nicht veröffentlichen, da ich für das Projekt einen 
Sponsor habe):

Die Kommunikation mit der Steuerung erledigt ein XMLRPC Daemon, das hat 
mehrere Vorteile:

Du kannst beim Klicken per JavaScript DOM einen XMLRPC Aufruf starten, 
ohne dass der Browser die Seite neu laden muss.
Wenn du Symbole in einem Grid darstellst (über den Grundriss gelegt) in 
Form von img tags, dann sind die zum einen klickbar und zum anderen 
kannst du per javascript gleich das bild austauschen um gleich dem 
Anwender eine visuelle Rückmeldung zu geben.

Gruss, Malte
(Firma: www.twipnet.ch/) Persönliche Seite #1397885
Lesenswert?

@ Malte:
Vielen Dank, werde mir mal die Sache mit den RPC überlegen. allerdings 
kenne ich das gar nicht, d.h. ich muss mich erst ein bischen 
einarbeiten.
Mit Grid meinst du den Grunriss in X elemente zu unterteilen, richtig?
Ich wollte mit PHPs Imagecreate überlagern, so kann ich bequem auch 
mehrere transparenzen überlagern...

@ all:

Im Anhang die etwas schönere Masterschaltung.
#1398066
Lesenswert?

Hi Yvo,

>Mit Grid meinst du den Grunriss in X elemente zu unterteilen, richtig?
ja. Habe ich auf einem n800 touchdings so gemacht, eine Tabelle mit 
10x10 pixeln breiten zellen und als hintergrundgrafik den grundriss.

Bin aber schon an einer Projekterweiterung. Will das ganze mit layern 
machen.
Stichwort dazu wäre unter selfhtml.org das thema DIV und Z-Index in der 
CSS-Doku.
Objekte kannst du mittels Z-Index auch transparent übereinanderlegen, da 
braucht man keine grossen Umstände mit programmierter Grafikerzeugung zu 
machen.

Das mit dem RPC funktioniert relativ einfach, im Prinzip machst du 
vorzugsweise in python ein Skript welches einen XMLRPC Server laufen 
lässt. Zu diesem Port kannst du dann per PHP und/oder Javascript 
verbinden und Kommandos geben. Das Skript welches im Hintergrund 
permanent läuft steuert dann den rest, so muss die Webseite nur einmal 
geladen werden.
Statusänderungen kannst du auch per rpc abfragen und per javascript 
aktualisieren.

Mein WebInterface ist halt speziell auf mobile devices ausgelegt, da 
musste ich mir was überlegen, da ein page reload doch nicht sonderlich 
schnell von statten geht :)

Gruss, Malte
(Firma: www.twipnet.ch/) Persönliche Seite #1398649
Lesenswert?

Hi Malte.

Vielen Dank, werd mir das mal ansehen. XML scheint doch...interessant zu 
sein in der Definition...1o Zeilen bis mal endlich die Value kommt^^

Werd mich da mal schlau machen über den Z-Index.

Mobil hab ichs simpel gelöst. Bin im Besitz eines Xperia X1 von SE, hab 
ne Homepage als Panel genommen, und sehe dort nun einfach die Tabelle 
mit den Werten. Für den Anfang reichts, wird aber noch ausgebaut, denke 
da an C oder VB für Windows Mobile.

Schönen Tag wünsch ich.
#1398778
Lesenswert?

Naja, das XML musst du nicht selbst produzieren, es gibt da eine fertige 
implementation für RPC via XML in fast jeder Programmiersprache...
Ich habe mich halt auf reines webinterface gestürzt, da ich nicht für 
spezielle devices/os programmieren will, besonders nicht für mobile 
devices :)
Persönliche Seite #1426551
Lesenswert?

Wenn es bei Grundig funzte, sollte sich an der Physik nicht viel 
geändert haben.
Die Zenerdioden können nur mit Vorwiderstand effektiv arbeiten. Noch 
mehr bringen zusätzliche Spulen, aber da muß man gucken was man so an 
Material einzusetzen pflegt. Ich versuche immer alles auf meine 
Standardbauelemente zu reduzieren.

470 Ohm? Bei normalen Treibern geht das nicht. Beim 715 müßte ich 
nachschauen. Hat doch irgendwas von Stromspiegel 5x oder 10x. Weiß nicht 
mehr. Dann würde es ja hinkommen.

So betrachtet, müßte man mit den 715 nun alles richtig skalieren. Also 
werden aus den 100 Ohm dann 10 bis 20 Ohm.


Gute Nacht -
Abdul
Gast #4392356
Lesenswert?

Hat übrigens funktioniert... Vor 6 Jahren... Ooh die Nostalgie. Das 
ganze ist übrigens damals durch irgend einen Kriechstrom abgeraucht.
Hatte die Schaltung (ohne Dimmfunktion) später mit einem Carambola (wifi 
soc) 3 Jahre im Einsatz.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren