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
Hatte ich auch im kleinen (1 Zimmer, ein paar Temperatursensoren, Bewegungsmelder) drüber nachgedacht aber überall steht dass I2C > 1 m nicht gut geht. Hat das schon mal jemand probiert?
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
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>
|
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; |
Ich würde innerhalb der Hausautomation nie I2C nehmen, sondern entweder etwas differenzielles, Funk oder Glasfaser. Aber ist ja Dein Haus...
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.
Ich würde dir von I2C extendern abraten, und eine Bridge, I2C auf rs485 verwenden, oder die Lösung von hauscomputer, beides ist billiger als die Extender. http://www.mikrocontroller.net/attachment/20501/i2cExtender.JPG http://hauscomputer.gmxhome.de/
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.
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
Einige haben ja sehr produktive Post-Gesinnungen... Bin bei Recherchen auf das Gestossen [[Beitrag "Temperatur- u. Steuerungsbus für Gärtnerei (längere Dista"]]
So, hab jetzt mal ne Runde "eingekauft" Nennt mich ein Thor, doch ich versuchs mit den Extendern. Oder habe ich eine Möglichkeit übersehen bei der ich über CAN oder RS232 Slaves ohne Programmieraufwand (d.h. mit fertigen IC's) nutzen kann?
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...
Und? Auf das Ergebnis bin ich gespannt ;-) Nicht das ich was gegen i2c hätte, ist einer meiner Lieblinge. Aber die Verwendung für sowas ist echt grenzwertig. Vorsicht bei SMBus-Komponenten! Die haben eine Minimalfrequenz!! Gruß - Abdul
ES GEHT, DIE SCH*** GEHT^^ Gut, die 100m Cat5 sind noch aufgerollt, trotzdem. Apropoz, der Oszi zeit wunderschöne Flanken an! Ohne Buffer 715 gienge allerdings nichts. Angesteuert wird zur Zeit eine IO-Karte von Horter & Kalb, 10€ oder so. Fotos folgen...
Aufgerollt ist ja schlimmer als abgerollt in Bezug auf Übersprechen und Induktionen ...
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.
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
Ü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^^
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
von Microchip gibt es verschiedene IO-Expander für den CAN-Bus. Z.B.: MCP25020 MCP25025 MCP25050 MCP25055 hier der Link zum Datenblatt: http://ww1.microchip.com/downloads/en/DeviceDoc/21664D.pdf
...direkt aus den entsprechenden Datenblättern übernommen. Zudem funktionnierts tadellos... Was genau ist gruselig?
> 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.
Dann such dir schonmal einen billigen Lieferanten für die 715er. Am Besten einige Stangen einlagern... Mach wenigstens irgendwelchen Schutz rein. Zenerdioden sind billig und gut. Deren Kapazität machts dann auch nicht mehr fett. Gruß - Abdul
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.
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
@ 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.
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
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.
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 :)
Ja, schon.
>denke da an C oder VB für Windows Mobile.
das meinte ich mit ich will nicht für eine bestimmte plattform bauen ;)
Sooo, wie versprochen hab ich nun mal n Video gedreht, ne Kleine Demo von der Aquariumbeschaltung. http://www.youtube.com/watch?v=ajeO3NXx_K0 Gruss, Yvo
Musste grad feststellen das die 715er sehr stabil sind, 24V am SCL aber nicht mögen und den Dienst effektvoll verweigern...
Früher fand man 100 Ohm Widerstände seriell in SCL und SDA in den Schaltplänen von Fernsehern an jeder Modulsteckerleiste. Ich würde dazu dann direkt am Chip noch ZD5V6 einbauen. Das sollte reichen.
Hmm, Mit nem Leitungswiderstand von vieleicht 20Ohm, 100Ohm seriell gibts 120Ohm. 470Ohm Pullup beim Master ergibt einen Spannungsteiler bei Slave = Low, d.h. der Master hat bei slave=low am Eingang noch 1V... Aber ja, die ZD... danke! Werd ich gleich korrigieren...
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
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.
Negativ. montricher2016.ch sowie eine owncloud, roundcube mit komplettem mail-backend, icinga2 mit nagvis und opennetadmin.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.