Hallo,
durch Zufall bin ich auf die Seite von MySensors.org (http://mysensors.org) gestoßen, welche ich sehr Interessant finde.
Zumal die Kosten für die Clients und des Gateway sich sehr im Rahmen halten (eigentlich sehr sehr günstig sind).
Man nehme 1x Arduino Pro Mini, 1x NRF24L01+, + den Sensor deiner Wahl, fertig ist der Client :-)
Alle Libaries und Beispielcodes sind OpenSource. Einige Hausautomations-Systeme werden schon unterstützt, nur halt leider nicht FHEM (welches aber erwähnt ist :-) ).
Jetzt zu meiner Frage:
Ist es evtl. in naher Zukunft von den FHEM Programmieren geplant, eine Intergration/Unterstützung von MySensors auf den FHEM-Server durchzuführen?
Ich habe einige Clients testweise stabil am laufen. Nur wäre es für mich und evtl. auch anderen Interressant zu Wissen, ob eine Implementierung hier geplant ist, damit man (ich) nicht in die falsche Richtung seine Schaltung/HAA entwirft.
Danke
Prinzipiell gibt es das schon alles.
Der Punkt ist der:
Zum einen muss man den Arduino mit fhem zusammen bringen. Hierzu gibt es z.B. Ethersex (Arduino mit LAN), oder schau dir die PanStamps an. Quasi mini Arduinos mit 868MHz Funkmodul integriert.
Dafür existieren in fhem schon Module.
Sketche für die Sensoren gibt es im Internet zuhauf.
Das Problem ist, dass jeder seine Sensoren an irgendwelche Pins klemmt, und jeder andere Sensoren will.
Daher findest du so direkt wenig. Im Bastelforum ist ein Thread der z.B. versucht, Innenraumsensoren auf PanStamp Basis zu verwirklichen. Lies mal rein.
Was imho ein Problem, bzw eine "Marktlücke" darstellt:
Ein HowTo, wie man aus einem 0815 Sketch für einen Arduino einen Sketch macht, so das man Ethersex oder PanStamps Swap Protokoll in fhem nutzen kann.
Das fehlt quasi noch...
Hallo Rince,
Ethernet ist ein gutes Stichwort.
Ich habe mir den neuesten Sketch von mySensors.org mal nachgebaut:
http://mysensors.org/build/ethernet_gateway
Das wäre schon mal ein Ansatz.
Ich habe mal versucht per HTTPMOD was ins fhem zu bekommen.
2014.09.06 23:14:33 4: HTTPMOD: GetUpdate called, hash = HASH(0x1326038), name = mysensors
2014.09.06 23:14:33 4: HttpUtils url=192.168.178.66:5003
2014.09.06 23:14:33 3: HTTPMOD got error in callback: 192.168.178.66:5003: malformed or unsupported URL
Das Gateway liefert mir derzeitig ja nur die Werte (Kanal, Wert usw..) auf das Webinterface.
Verstehe ich das richtig.. wenn ich den Sketch anpassen würde, wie auch immer, könnte man von den MySensors-Sensoren die Werte direkt in den Readings schreiben?
Übrigens fände ich es cool, wenn fhem auch neben Ago Control, OpenHAB, PiDome, Vera und Indigo Domotics auch in der Liste auftauchen könnte.
robin
Hi,
also ich habe mir den USB/seriell Gateway nachgebaut und habe ihn momentan zum Testlauf am PC angeschlossen und steuere die Clients über ein Terminalprogramm.
Ich dachte, das es ja so ähnlich funktionieren müsste wie ein "Cul", werden die Daten dort nicht auch seriell über den USB zum FHEM übergeben?
Somit bräuchte man den Gateway (USB-Version) nur an den Raspberry anzustecken (wie ein CUL).
Wenn ich jetzt total FALSCH liege, dann klärt mich bitte auf :-)
Danke
P.S.: Ob nun die USB (serielle) oder die Netzwerk-Version von FHEM unterstützt wird, wäre mir eigentlich egal, getestet habe ich bisher nur die USB/serielle Version. Sobald mein Ethernet Modul bei mir eintrifft (in ca. 14 Tagen) werde ich auch diese Version mal testen :-) Da ist man bei MySensors halt sehr flexibel :-)
Schon recht, man müsste so ein CUL-ähnliches Modul für die Input-Gateway (also Transmitter) erstellen, und dann Module für jeden Sensor-Typ.
Was mir an diesen Projekt nicht gefällt, ist der verwendete Transmitter. Bei 2,4GHz kommt man einerseits mit dem WLAN ins Gehege, andererseits ist die Reichweite nicht wirklich gut. Nicht umsonst senden meiste Sensoren auf den anderen Ferequenzen (in DE 433MHz oder 868MHz).
Daher habe ich mich bei meinen Selbstbau-Sensoren für ein anderes System entschieden (http://s6z.de/cms/index.php/homeautomation/eigenbau/56-tinytx-wireless-sensor-nodes). Als Empfänger kann JeeLink verwendet werden. Da gibt es auch schon ein FHEM-Modul dafür. Ein FHEM-Modul für DHT22-Sensor habe ich dann selbst geschrieben. Kann evtl. als Vorlage dienen...
Hallo Hexenmeister,
da muss ich die widersprechen. Ich habe das mit meinem WLAN getestet, Fritzbox und Apple Time Capsule und habe keine Störungen gehabt. Von der Reichweite kann ich dir sagen, das das Signal locker durch zwei Räume ging. Am "Gateway" habe ich eine Versiono mit längerer Antenne genommen (kostete 4 Euro).
LG
/Robin
Widersprechen?! Das geht nicht! ;)
Aber Spaß beiseite, dass das mit WLAN parallel geht ist klar (Stichwort Collision Detection), die Frage ist, ob der Durchsatz dabei merklich leidet oder nicht. Und die Reichweite mag zwar in einem Fall ausreichend sein, aber die 2,4GHz -Wellen werden nun mal stärker adsorbiert als 868MHz. Bei mir kommt WLAN durch die (Eisenbeton-)Decke fast gar nicht durch, die HomeMatic-Kommunikation (868) erfolgt jedoch problemlos.
Ansonsten hat das System natrürlich seine Daseinsberechtigung. Und eine FHEM-Integration wäre sicherlich nicht verkahrt. Wenn jemand das machen will, kann sich CUL oder Jeelink Module ansehen.
Hi Hexenmeister,
jetzt laufen wir wieder kongruent :-)
Sehe ich genauso. Die Technik davon ist preiswert und wenn sich jemand hinsetzt und ein Gateway für Fhem schreibt, ist es wieder eine Bereicherung für dieses offene System. Ich würde es auch begrüßen (wie fh555), denn ich habe auch - mehr aus Spaß - mit einigen Sensoren rumgespielt. Ob die sich für den Alltag eignen (Stabilität, Laufzeit etc.) wird sich zeigen, wenn die an Fhem angeflanscht sind.
Viele Grüße
Robin
Ah, nee, wenn sie schon richtig "angeflanscht" sind, ist es schon zu spät ;)
Ich würde erstmal eine provisorische Anbindung an FHEM erstellen und dann sehen, ob's gut läuft.
Also zunächst ein einfacheres Prototyp-Modul, wo hard verdrahtet und stumpf ein bestimmter Sensor abgefragt wird.
Ich habe mir die Quellen nicht angesehen, aber es wird Zur Not sicher noch einfacher möglich sein... eine einfache Perlfunktion (und ggf. eine leichte Anpassung von Sketches (zum Testen)), die periodisch (per AT aufgerufen) den GateWay abfragt und die Werte in ein Dummy schiebt.
Das kann man dann loggen und auch Plotten. So ist dann nicht weiter schwer die Reichweite etc. zu testen.
Dann kann man auch getrennte saubere Module für GateWay und alles andere zu erstellen. Dies erfordert dann natürlich schon einen gewissen Erstellungs- und Test-Aufwand.
Hallo Hexenmeister,
hab ich doch schon gemacht: Einen Sensor, der stumpf die Daten über USB zum Fhem rüberschubst, definiert als Jeelink-Device.
http://blog.moneybag.de/drahtloser-distanzsensor-mit-arduino-nrf24l01-und-ultraschallsensor/
Schaue dir mein Youtube-Video an und die Kommentare weiter unten. Der Sketch der einzelnen Sensoren ist ganz pfiffig gemacht, er sagt beim Start des Sensors, was für einer er ist (Feuchtigkeitssensor, Temp-Sensor etc) dann den festgelegten Kanal und den Wert (Aus, EIN, Temperatur etc.)
Nur er sagt natürlich UNKNOWN CODE, ist ja klar, weil der Jeelink ihn nicht kennt.
LG
/robin
OK, scheinbar haben einige Leute damit gute Erfahrungen gemacht. Mir gefällt es trotzdem besser, einen maximal großen Abstand zu meinem WLAN zu haben ;)
Die Integration in FHEM dürfte relativ einfach sein. Passt doch einfach JeeLink.pm fürs GateWay und z.B. mein GSD-Modul als Basis für die Sensoren (https://github.com/hexenmeister/MyFHEM/blob/master/FHEM/36_GSD.pm). Oder passt das GateWay-Sketch so, dass statt Semikolongetrennten Zahlen die Hex-Reihen rauskommen, wie bei JeeLink/GSD-Modul erwartet. ;) Die letzte dürfte die schnellste Lösung sein.
würde ich ja machen, wenn ich Perl könnte. Wie schon gesagt, die PM-Datei müsste "einfach" beim ersten Reinstecken des Moduls den Namen und den Channel notieren vom Sensor und anschließend die Werte (Temperatur, an aus) loggen... das wäre es..
@Robin,
Ich habe vor kurzem deinen fertig geflashten Jeelink für das Auslesen der Technoline Temperatursensoren erstanden.
Ich hbe das mit den MySensors in Verbindung mit dem Jeelink noch nicht ganz verstanden. Deinen Blogbeitrag finde ich aber sehr sehr interessant.
Mich würde jetzt vor allem interessieren, ob der Jeelink parallel die vorhandenen Temperatursensoren als auch die Sensoren von MySensors auslesen kann, ich möchte natürlich nixhtr noch einen zweiten Jeelink einsetzen.
Grüße,
Michael
@Roaster
JeeLink (besiert auf RFM12b) kann natürlich keine Signale von diesen Sensoren empfangen. Es ging nur um den JeeLink-Perl-Modul, nicht um die Hardware!
Zitat von: hexenmeister am 08 September 2014, 20:34:38
JeeLink (besiert auf RFM12b) kann natürlich keine Signale von diesen Sensoren empfangen. Es ging nur um den JeeLink-Perl-Modul, nicht um die Hardware!
Bedeutet nun, dass wenn man die Sensoren einsetzen möchte eine weitere Hardware benötigt :-\
Zitat von: Roaster am 08 September 2014, 20:46:01
Bedeutet nun, dass wenn man die Sensoren einsetzen möchte eine weitere Hardware benötigt :-\
Selbstverständlich, Du brauchst kompatiblen Transmitter.
@fh168
Jut, dann eben andersrum - kannst Du C? Wenn Du die Sketches bezüglich der (serielen) API JeeLink-kompatibel anpassen willst, helfe ich Dir die Sensoren mit dem GSD-Modul in FHEM zu integrieren. Incl. Autocreate ;)
Hallo,
nur mal so nebenbei erwähnt ;)
denkt ihr bitte daran, wenn der Stein nun ins Rollen gekommen ist und man sich wirklich Gedanken zwecks Umsetzung macht,
das es Nodes (Clients) gibt, welche Signale vom Gateway empfangen und dann dementsprechend reagieren.
zum Beispiel: Node/Client "Relais"
In der Kombination mit einen "Motion-Sensor" oder einfach nur einen "Kontakt/Schalter" würden dann die Signale über FHEM dementsprechend Empfangen, Ausgewertet und ggf. neue Befehle gesendet.
Also beim betätigen eines "Wandtasters/Schalters" oder bei Erfassung eines "Objektes", dann schalte das "Relais im 1. OG" ein.
Oder bei Unterschreiten eines Wasserspiegels oder Feuchtigkeitsgrad -> aktiviere die Bewässerungspumpe.
Bei den Sensoren ist es auch mgl. den Status entweder abzufragen oder sich periodisch senden zu lassen.
Das es quasi eine Bidirektionale Kommunikation bei "MySensors" gibt und das zu den Preis finde ich eben sehr interessant.
Werden nur periodisch Werte gesendet (z.Bsp. alle 15 Minuten die Temperatur) kann man die Sensoren in den "Sleep" schicken um Energie zu sparen. Somit wäre ein Batterieversorgung für solche Sensoren auch überlegenswert. Aber das ist hier gerade ein bisschen OT ::) Ich werde mich demnächst noch mit der Batteriegeschichte beschäftigen, da man "angeblich" fast 2 Jahre mit einen Batteriesatz auskommen soll.
Ich danke schon einmal alle, bei den ich etwas Interesse für dieses Projekt geweckt habe und sich schon einmal Gedanken für eine eventuelle Umsetzung gemacht haben oder ggf. noch machen werden.
DANKE
Mit den Batterien ist immer schon so eine Sache... Der Arduino kann schon sehr sparsam betrieben werden (http://s6z.de/cms/index.php/arduino/nuetzliches/9-winterschlaf-fuer-arduino). K.A. Was dieser Transmitter an Energie verbrät, aber 1 Jahr halte ich schon für realistisch (meine ATtiny/RFM12b Sensoren überleben mit einem 3,7V Li-Akku auch in etwa diese Zeitrahmen).
Ins Rollen ist IMHO noch gar nichts gekommen. Eine vollständige Unterstützung eines ganz neuen Systems ist eine anspruchsvolle Aufgabe. Da ich selbst diese Teile wohl nicht betreiben werde (ich habe schon 2 verschiedene Funksysteme am Laufen, evtl. kommt noch zwave dazu), habe ich kein Interesse und auch keine Zeit dafür. Eine andere Geschichte ist, wenn man die Hardware nutzt und die Firmware mit bereits unterstützten Modulen (JeeLink) kompatibel macht (wahrscheinlich reicht es dafür die Gateway-Firmware zu modifizieren). Und da biete ich meine Unterstützung bei der Anpassung von GSD-Modul für die einzelne Sensor-Typen. Über Aktoren sprechen wir derzeit noch gar nicht, wäre natürlich theoretisch auch möglich... Ich denke jedoch, spätestens, wenn man 250V schalten will, sollte man unbedingt auf fertige Geräte mit CE-Zeichen zurückgreifen. Allein schon aus versicherungstechnischen Gründen.
Hi Hexenmeister,
meine Bewässerungspumpe arbeitet mit 12V ;) , war wohl einer besten Anschaffungen die ich jemals gemacht habe, günstig, richtig Druck, Markengerät!, so etwas für den Preis habe ich ehrlich noch nie gesehen, hatte ich beim Campingauststatter über Amazon erworben :-) aber das mal nur so nebenbei 8)
Damit bewässere ich mein 5 m2 Gewächshaus (teils 2 Etagen) + Hochbeet mit den Gardena Micro-Drip System, nur war die Gardena "kleine" Pumpe dieses Jahr etwas überfordert, deshalb entschied ich mich für diese. Eigentlich war geplant die Gardena und die "neue" Pumpe von der Bewässerung dementsprechend aufzuteilen, doch nun erledigt das eine "super kleine" Minipumpe 8)
Es wäre natürlich schön, wenn entweder die Sensoren bei zu geringen Feuchtigkeitsgrad oder zu hoher Temperatur (wenn sich der Wetterdienst wieder einmal irrt) die Pumpe einzuschalten, bzw. wenn ich es per Web manuell mache.
Der Zugriff auf den FHEM Server über das INET, habe ich ja schon, dann bräuchte ich diese Geschichte nicht noch über ein Terminal zu machen.
Nur so mal als Beispiel ;)
und du weist ja, die Hoffnung stirbt zum Schluß :)
Das über FH20 oder andere Systeme zu machen ist wirklich teuer und es geht nur in eine Richtung oder noch teuerer wenn man es in beide Richtungen machen will!
Wenn ich sage schalte die Pumpe ein, dann sendet dieses System (z.Bsp. FH20) "Pumpe ein", ob es empfangen wurde und die Pumpe wirklich "An" ist, kann ich nur hoffen, da ich keine Rückmeldung bekomme.
Aber ich finde es schon mal "Gut", das sich einige User den Threat durchlesen (momentan ca. 300!) und sich vielleicht auch für dieses System "MySenors.org (http://mysenors.org)" interessieren. Vielleicht ist ja auch der ein oder andere Programmierer dabei, der sein Wissen bei der Umsetzung einfließen läßt.
Das würde ja dann nicht nur einen einzelnen sonder der Allgemeinheit zu Gute kommen :-)
Zitat von: Roaster am 08 September 2014, 19:45:55
@Robin,
Ich habe vor kurzem deinen fertig geflashten Jeelink für das Auslesen der Technoline Temperatursensoren erstanden.
Ich hbe das mit den MySensors in Verbindung mit dem Jeelink noch nicht ganz verstanden. Deinen Blogbeitrag finde ich aber sehr sehr interessant.
Mich würde jetzt vor allem interessieren, ob der Jeelink parallel die vorhandenen Temperatursensoren als auch die Sensoren von MySensors auslesen kann, ich möchte natürlich nixhtr noch einen zweiten Jeelink einsetzen.
Grüße,
Michael
hast eine PM von mir.
Jeelink-Lacrosse und Mysensor-Gateway Sketch passen auf einen Nano drauf. Du benötigst, wie Hexenmeister schon sagt, noch mindestens 2 von den nRF24L01 (Sender / Empfänger), wobei der erste nRFL2401 als Transceiver zusätzlich auf dem "Jeelink"-Lacrosse-Nano angelötet wird.
Läuft bei mir seit Monaten stabil, nur leider kein echtes Interface zum fhem, lediglich im Fhem-Monitor sehe ich die Alarme, sie mein Blogbeitrag in den Kommentaren.
Robin
@fh555
Verstehe, 12V kann man schon schalten.
Ich finde es auch wichtig, dass das System eine Rückmeldung gibt. Daher verwende ich HomeMatic. Ich finde, erlich gesagt, für das gebotene witd hier nicht zu viel verlangt. Mit 30 Euro für den Transmitter und ab 17 EUro für den Schaltaktor-Bausatz bist Du dabei.
http://www.elv.de/homematic-schaltaktor-fuer-batteriebetrieb-komplettbausatz.html
http://www.elv.de/homematic-4-kanal-funk-schaltaktor-fuer-batteriebetrieb-bausatz.html
http://www.elv.de/homematic-8-kanal-empfangsmodul.html
Basteleien lohnen sich eingentlich nur, wenn man auch Spaß am Basteln hat. Aber gut, warum auch nicht...
Ok, my school german isn't what it used to be and I can't understand much of this thread. ;)
But I'm happy to answer any questions regarding MySensors if you need help getting started with a plugin for FHem.
Thanks for the offer. My English is also sufficient for reading rather than writing. ;)
But it must be enough.
I like the good documentation, easy way of implementation of new sensors and many examples in the MySensors project. Not so nice that each measured value is transmitted individually. The wasted bandwidth in the case of a bigger quantity of sensors.
There are currently no questions. The integration should not be very difficult. But I do not see any great interest exists. I ordered some transceiver boards and want to try this in terms of range. If this will be good, I will possibly create a FHEM module. The post from China needs a lot of time unfortunately. :(
Yep, the china-post-lottery is always a fun surprise ;)
Bandwidth is usually not a problem at 2.4GHz. The modules can even be used to transmit audio (but I haven't created any examples of this yet though).
Lower frequencies has an advantage on distance and that's why I implemented the mesh functionality in the library. But I haven't really needed it in my 180sqm house yet. :D
Mesh is cool of course :)
Audio would be theoretically interesting.
I use in my house RFM12B with 868MHz. Unfortunately, the ceilings contain so much iron that the range is just as sufficient. I'm looking forward to the tests at 2.4 GHz. ;)
It also could be usefull to implement mqtt-support in fhem. This would allow the use of MySensors mqtt-gateway. There's also es existing perl-module to interface with MQTT (both on CPAN (http://search.cpan.org/dist/Net-MQTT/) and github (https://github.com/beanz/net-mqtt-perl)).
Prima, es geht hier weiter. And welcome HEK to this forum, I wrote an article in my blog a few month ago: http://blog.moneybag.de/drahtloser-distanzsensor-mit-arduino-nrf24l01-und-ultraschallsensor/ to advertise your Website mySensors.org for fhem.
Nicht so schnell.
Ich sehe immer noch nicht viele Interessenten hier. Nicht unter Entwickler und auch nicht bei den (potentiellen) Nutzern.
Ich habe mir ein Transmitterpärchen bestellt und will erstmal schauen, wie die Reichweite und Stromverbrauch aussehen.
Sollte beides akzeptabel sein, will ich Module für SerialGateway und die wichtigsten Sensoren erstellen. Dann sehen wir weiter.
MQTT ist sicherlich nicht uninteressant, hätten wir konkretten weiteren Nutzen dafür, außer MySensors?
ich hab grade mal angefangen Net::MQTT in ein fhem-modul zu wrappen. Die Kommunikation ist an sich ist ziemlich straingforward. Aber darüber, wie man die Nachrichten dann auf konkrete readings abbildet, ob man spezialisierte Child-devices schreiben sollte, oder ob das generisch sinnvoll geht, darüber muss ich mir erst noch mal einen Kopf machen. Den notwendigen mqtt-broker kann man auf Linux in form von mosquitto (http://mosquitto.org/) jedenfalls in sekunden installieren und auch gleich (auch mit den beispielsscripten von Net::MQTT) nutzen.
Ich Hab jetzt noch nichts anderes im Blick was konkret über mqtt anzubinden wäre. Ich finde das aber einfach so ziemlich interessant und potentiell nützlich, ist halt ein standartisiertes Protokoll, über dass ich beim Stichwort 'Internet of Things' in den letzten Monaten immer wieder gestolpert bin. Man könnte damit nicht nur weitere Sensoren an fhem anbinden, sondern auch in die Gegenrichtung von fhem versorgte Devices nach mgtt publizieren oder darüber steuern lassen. Auf der anderen Seite kann dann ja z.B. eine Arduino-app oder eine andere Visualisierungsoberfläche arbeiten, die gar nicht speziell für FHEM geschrieben wurde. Mal sehen, was daraus wird...
Ich habe mich etwas in MQTT eingelesen.
Ja, die Vorstellung ist schon cool.
Ganz salopp: Man nehme einen Temp.Sensor, tue es in die Küche in den Kühlschrank, teile ihm das auch mit und plötzlich schreit er in die ganze Welt (aus dem Kühlschrank ;) ) die Innentemperatur. Der FHEM-Server sieht das und legt schon mal die Objekte für Küche und Kühlschrank gleich mit dem Temperaturwert ;)
Leider kenn FHEM gar keine Objekte und Räume :(
Auch die MQTT Implementierung in MySensors macht nicht viel mehr als in etwa folgendes zu übertragen: /MyMQTT/SenderID/SensorID/READING_TYP = WERT
Da müsste man das irgendwo noch mappen, zu den 'reellen' Räumen und Gegenständen. Dies müsste wohl schon im GateWay passieren.
Aber das Thema ist ja auch noch viel größer, als FHEM oder MySensors. Man braucht einen externen Brocker, eine irgendwie geartete Verwaltung und, und, und...
Interessant, was daraus wird.
es gibt hier: http://forum.fhem.de/index.php/topic,27291.msg202969.html#msg202969 (http://forum.fhem.de/index.php/topic,27291.msg202969.html#msg202969) auch gerade die idee eventuell mqtt zu verwenden. vielleicht wäre eine generische fhem/mqtt schnittstelle ja noch für andere dinge interessant.
gruss
andre
Zitatvielleicht wäre eine generische fhem/mqtt schnittstelle ja noch für andere dinge interessant.
Ja, vielleich, man muss aber etwas konkretisieren. In meiner Vorstellung würde das schon auf einen nicht unerheblichen Aufwand hinauslaufen. Vielleicht sollen wir (in einem Extra-Thread) ein möglichst vollständiges System skizzieren. Rolle von FHEM, Mapping, Regeln für Autocreate...
Da hat aber mit MySensors eingentlich nichts mhr zu tun.
hab mal eine generische mqtt-bridge (http://forum.fhem.de/index.php/topic,27532.0.html) gebastelt...
Gruß,
Norbert
Jetzt muss man denn MySensor-Geräten noch beibringen, sich als fhem/wohnzimmer/temperatur zu melden.
Dafür nimmt man dann wohl das mqtt_gateway (http://mysensors.org/build/mqtt_gateway).
Ok, die topics heißen da natürlich anders, aber man kann mit MQTT_DEVICE jedes mqtt-Topic auf jedes FHEM-Reading mappen. Für nicht-fhem-Geräte wie die MySensor-sensoren, die nicht fhem steuern, sondern Werte an fhem reporten sollen, muss man das aktuell auf dummies abbilden. An der Stelle ist das MQTT_DEVICE sicher noch ausbaufähig, damit man in dem Fall weniger Redundanz in die Konfiguration bekommt.
Gruß,
Norbert
Ja, klar, ich überlege nur, wie man diese Mapping-Orgie etwas einfcher gestallten kann...
Einerseits wäre es schön, wenn die Devices (MySensors oder was auch immer) auf die gewünschte Topics eingestellt werden könnten ('Sensor0815, Du bist jetzt 'eg/wohnzimmer' und dass du Temperatur lieferst, weiß du ja selber' => also 'eg/wohnzimmer/temperatur'). Andererseits ist die universellere FHEM-seitige Mapping auch unverzichtbar...
Der MQTT-Gateway Sketch von mySensors läuft schon mal bei mir hardwaremäßig.
Wie bekomme ich die Dateien vom mqtt_gateway (trunk) in mein Fhem rein? Alle einzeln kopieren?
Sind ja nur 2 Dateien und 1 Verzeichniss rekursiv zu kopieren.
Oder bis morgen warten und ein Update machen.
dann warte ich bis morgen. Auf einen Tag später kommt es jetzt auch nicht an.
Ich habe es gerade ausprobiert (ohne Hardware). Bei mir läuft noch nicht, habe in dem anderen Thread beschrieben.
yep, habe ich gesehen. Na ja, wird wohl nichts großes sein und schon bald gefixt werden.
gehe davon aus ;)
update im SVN, siehe anderen Thread (http://forum.fhem.de/index.php/topic,27532.msg204448.html#msg204448)
Mit den Anpassungen an MQTT_DEVICE sollte sich ein MySensors-gerät ohne dummy direkt auf eine MQTT_DEVICE-instanz abbilden lassen. Zum mappen von existierenden FHEM-devices auch mqtt-topics gibt's jetzt MQTT_BRIDGE.
Der Fehler ist mit dem DevIOSimpleWrite ist gefixed, der Hänger bei Alexander ist eventuell plattformabhängig? Hier flutschts (auf Ubuntu 14.04)
Gruß,
Norbert
Hi und supi, dass ihr die Implentierung in Betracht gezogen habt ;D
Ich habe gleich ein W5100 geordert, damit wenn ihr möchtet, ich aktiv mit testen kann.
mein aktueller Abruf wirft das raus:
Can't locate Net/MQTT/Constants.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM ./FHEM/lib) at ./FHEM/00_MQTT.pm line 30.
BEGIN failed--compilation aborted at ./FHEM/00_MQTT.pm line 30.
Da kam wohl das Verzeichnis im Lib nicht mit.
Ich denke, neue Verzeichnisse werden nicht automatisch beim Update übernommen.
Davon abgesehen, ich habe zwar diese Dateien, aber trotzdem ein anderes Error.
ich habe das verzeichnis aus dem trunk - möglicherweise umständlich mit ftp - auf mein fhem gebeamt.
war sogar ohne fehlermeldung.
nun frage ich mich wie ich bspw. ein reed-schalter da lesemäßig ansprechen kann.
und woran sehe ich, ob meine Netzwerkkarte vom arduino überhaupt funktioniert? Steht dann in den Properties von fhem dann connect?
define mySensors MQTT 192.168.178.234:1883
reicht ja nicht
DEF
192.168.178.234:1883
DeviceName
192.168.178.234:1883
NAME
mySensors
NEXT_OPEN
1412279472
NOTIFYDEV
global
NR
3
NTFY_ORDER
50-mySensors
PARTIAL
STATE
disconnected
TYPE
MQTT
msgid[/code]
Serial monitor wirft bei geschlossenen Reed-Kontakt folgendes aus:
Started!
0;0;3;0;9;read: 255-255-0 s=255,c=3,t=3,pt=0,l=0:
Zitat von: fh168 am 02 Oktober 2014, 21:52:31
nun frage ich mich wie ich bspw. ein reed-schalter da lesemäßig ansprechen kann.
und woran sehe ich, ob meine Netzwerkkarte vom arduino überhaupt funktioniert? Steht dann in den Properties von fhem dann connect?
Naja es scheint sich nicht konnecten zu können. Wenn die Adresse stimmt, dann funktioniert einer der beiden Teilehmen (FHEM-Modul vs. MySensors-Gateway Sketch) nicht korrekt.
ok, ich forsche weiter
wie kann man antesten, beim arduino modul die netzwerkkarte funktioniert?
Das wuerde mich auch interessieren, da weder ein ping, web oder telnet Verbindung auf die IP:Port funktioniert.
Eine serielle Ausgabe über den Lan Gateway funktioniert, somit melden sich die Sensoren schon einmal am Gateway an.
so ich bin nun einen Schritt weiter :-)
Eiin Ping und eine Telnet Verbindung funktioniert. Jetzt den Trunk in fhem/lib/net eingepflegt mit den entsprechenden Rechten.
In die fhem.cfg den Eintrag "define MQTT_MySensors MQTT 192.168.100.250:1883" ergänzt.
Nun bekomme ich folgende Fehlermeldungen :-(
Constant subroutine main::MQTT_PINGRESP redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_CONNECT_ACCEPTED redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_UNSUBSCRIBE redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_QOS_AT_LEAST_ONCE redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_DISCONNECT redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_PUBREL redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_CONNECT_REFUSED_SERVER_UNAVAILABLE redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_QOS_AT_MOST_ONCE redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_UNSUBACK redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_CONNECT redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_CONNECT_REFUSED_NOT_AUTHORIZED redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_PINGREQ redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_PUBCOMP redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_PUBLISH redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_CONNECT_REFUSED_IDENTIFIER_REJECTED redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_SUBACK redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_PUBACK redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_CONNACK redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_SUBSCRIBE redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_CONNECT_REFUSED_UNACCEPTABLE_PROTOCOL_VERSION redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_CONNECT_REFUSED_BAD_USER_NAME_OR_PASSWORD redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_QOS_EXACTLY_ONCE redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
Constant subroutine main::MQTT_PUBREC redefined at FHEM/lib/Net/MQTT/Constants.pm line 44, <$fh> line 61.
dann
2014.10.03 00:46:48 1: 192.168.100.250:1883 disconnected, waiting to reappear (MQTT_MySensors)
2014.10.03 00:46:48 1: 192.168.100.250:1883 reappeared (MQTT_MySensors)
Gruß Jens
Das sieht schon mal gut aus
connection
active
2014-10-03 10:24:37
jetzt nur noch einen Sensor einbinden, geht das mit
subscribeSet
45/0/V_9/set
??
Danke schon mal an fh555 :-)
Sensoren melden sich selber :-),
Screenshot vom Arduino - Serial Monitor
MyMQTT/20/0/V_TRIPPED
>>30 18 00 15 4D 79 4D 51 54 54 2F 32 30 2F 30 2F 56 5F 54 52 49 50 50 45 44 30
0;0;3;0;9;read: 20-20-0 s=0,c=1,t=16,pt=2,l=2:1
MyMQTT/20/0/V_TRIPPED
>>30 18 00 15 4D 79 4D 51 54 54 2F 32 30 2F 30 2F 56 5F 54 52 49 50 50 45 44 31
0;0;3;0;9;read: 20-20-0 s=0,c=1,t=16,pt=2,l=2:0
MyMQTT/20/0/V_TRIPPED
>>30 18 00 15 4D 79 4D 51 54 54 2F 32 30 2F 30 2F 56 5F 54 52 49 50 50 45 44 30
0;0;3;0;9;read: 20-20-0 s=0,c=1,t=16,pt=2,l=2:1
MyMQTT/20/0/V_TRIPPED
>>30 18 00 15 4D 79 4D 51 54 54 2F 32 30 2F 30 2F 56 5F 54 52 49 50 50 45 44 31
0;0;3;0;9;read: 45-45-0 s=3,c=1,t=16,pt=2,l=2:0
MyMQTT/45/3/V_TRIPPED
>>30 18 00 15 4D 79 4D 51 54 54 2F 34 35 2F 33 2F 56 5F 54 52 49 50 50 45 44 30
0;0;3;0;9;read: 45-45-0 s=3,c=1,t=16,pt=2,l=2:1
MyMQTT/45/3/V_TRIPPED
>>30 18 00 15 4D 79 4D 51 54 54 2F 34 35 2F 33 2F 56 5F 54 52 49 50 50 45 44 31
>>D0 00
<<C0 00
>>D0 00
<<C0 00
>>D0 00
Updata reedkontakt (1 / 0) Zustände
define mqtt MQTT 192.168.178.234:1883
define mqtt_Reedschalter2 MQTT_DEVICE
attr mqtt_Reedschalter2 IODev mqtt
attr mqtt_Reedschalter2 stateFormat transmission-state
attr mqtt_Reedschalter2 subscribeReading_state MyMQTT/45/3/V_TRIPPED
Ergebnis sieht dann so aus.
Readings
state
1
2014-10-03 12:43:55
transmission-state
publish received
2014-10-03 12:43:54
Einen herzlichen Dank an die Programmierer!!!
Wenn das ausgerollt wird, werde ich einen Blog-Beitrag darüber schreiben. Ein interessantes Thema.
Kann man das ganze nicht USB laufen lassen zum Raspi hin? Jetzt habe ich wieder ein Netzwerkkabel hier rumliegen..mag ich nicht.
Das Bild zeigt einen Arduino Uno mit einem Net-Shield (W 5100 Ethernet-Module) und einem Feuchtigkeitssensor. Meinen Distanzsensor, den ich damals mal gebaut habe, habe ich leider schon wieder auseinandergerupft ;-): http://blog.moneybag.de/drahtloser-distanzsensor-mit-arduino-nrf24l01-und-ultraschallsensor/
(http://blog.moneybag.de/wp-content/uploads/2014/10/mysensors.jpg)
Robin
Per usb geht nicht (ohne weiteres) mit MQTT.
Schade, wieder ein Kabel mehr.
Die Software läuft stabil, habe schon den ganzen Tag das Ding am rennen mit zwei Sensoren.
robin
mqtt über USB wäre vom Protokoll her kein Problem - mqtt arbeit ja mit einer dauerhaften Socket-verbindung, über die alles gestreamt wird. Nach meinem Verständnis sollte man das ganz einfach mit socat von USB nach TCP/IP umsetzen können (USB mir virtueller serieller Schnittstellt -> socat -> socket-verbindung nach mqtt). Ich weiß allerdings nicht, wie robust das gegen Ausfall oder Neustart einer der Komponenten wäre.
die fhem MQTT-module implementieren selber jedenfalls keinen Broker, sondern nur den mqtt-client. Deshalb kann man die MQTT-bridge nicht so ohne weiteres direkt über USB mit dem Modul verbinden lassen. Aber dass muss ich mir noch mal im Detail ansehen (also im Source-code der mqtt-bridge), ob die nicht auch mit geringen Änderungen mit einem mqtt-client reden könnte zu dem sie über einen Stream (also z.B. USB) direkt verbunden wäre.
Gruß,
Norbert
Hallo Norbert,
eilt alles nicht. Ist ein nice to have. Ich bin schon glücklich das endlich diese Technologie jetzt zur Verfügung steht. Danke nochmals dafür.
Ich habe es bisher geschafft, ein Reed-Kontakt von MySensors in Fhem zu implementieren. Siehe letzten Post. Reicht eigentlich für mich auch. Alle anderen Sketches (Temperaturmodule etc.) werden bei mir nicht automatisch erkannt.
robin
Hallo,
so ich habe es nun auch endlich am Laufen, da mein w5100 heute endlich gekommen ist.
Einige Sensoren habe ich schon erfolgreich ohne größere Probleme ins System integrieren können.
Wenn ich demnächst (in ca. 3 Wochen) mehr Zeit habe, nehme ich das mit den ENC28J60 noch einmal in Angriff,
da das noch eine kostengünstigere und vorallem kleiner Variante ist.
Bis dahin sollten auch meine restlichen Teile aus China eingetroffen sein :-)
Gruß Jens
Zitat von: fh555 am 08 Oktober 2014, 22:34:20
Wenn ich demnächst (in ca. 3 Wochen) mehr Zeit habe, nehme ich das mit den ENC28J60 noch einmal in Angriff,
Wie groß ist der mqtt-bridge Sketch denn, wenn man ihn für den W5100 compiliert? (Die ENC28J60-variante braucht nämlich ein paar kb mehr).
Gruß,
Norbert
Ich habe ds selbst zwar nicht ausprobiert, aber laut Hersteller-Seite soll das auch mit ENC28J60 gehen.
Hallo Hexenmeister,
der Platz reicht für den ENC28J60 zur Zeit nicht aus (Nano mit FTDI). Ich habe als Alternative den Uno mit Network-Shield genommen, klappt. (Siehe Fotos oben)
LG
/robin
Oh, Du hast recht, das steht nur bei dem 'nicht MQTT'-Sketch dran:
ZitatEnable your Ethernet module as illustrated below:
#include <UIPEthernet.h> // Use this if you have attached a Ethernet ENC28J60 shields
//#include <Ethernet.h> // Use this for WizNET module and Arduino Ethernet Shield
also geht nicht...
bekommt man das softwaremäßig hin, das alles auf einem Nano mit ENC28J60 draufpasst? Es fehlt nur knapp 1 kb.
UDP abzuschalten indem man in der uipethernet-conf.h (https://github.com/ntruchsess/arduino_uip/blob/master/utility/uipethernet-conf.h) UIP_CONF_UDP auf 0 setzt spart ca. 5kb (dann braucht der Sketch eine feste IP und der mqtt-server mit ip-addresse statt hostnamen angegeben werden, weil dann DHCP und DNS nicht mehr geht.)
Beim RAM-bedarf kann man mit UIP_CONF_MAX_CONNECTIONS 1 einiges sparen. Der mqtt-client sollte nach meinem Verständnis mit 1 offenen Socketverbindung auskommen.
Gruß,
Norbert
hallo,
werde ich ausprobieren. Der mySensors-gateway-MQTT-Sketch benötigt sowieso eine feste IP. Das würde ja passen.
und ein neues Problem seit den FHEM-Update (gestern und heute).
Ich hatte gestern u.a. die Updates MQTT, MQTT_Bridge, MQTT_Device per "fhem update" eingespielt und anschließend ein "shutdown restart" per "FHEM-Console" durchgeführt. Seitdem läuft der MQTT Gateway garnicht bzw. instabil.
Hat sich in den Definitionen der Geräte etwas geändert?
Momentan spreche ich mein Gateway wie folgt an:
define MQTT_MySensors MQTT 192.168.100.250:1883
set MQTT_MySensors connect
und die Geräte definiere ich
define mqtt_schalter1 MQTT_DEVICE
attr mqtt_schalter1 IODev MQTT_MySensors
attr mqtt_schalter1 alias Schalter 1
#attr mqtt_schalter1 stateFormat transmission-state
attr mqtt_schalter1 stateFormat state
attr mqtt_schalter1 subscribeReading_state MyMQTT/10/3/V_TRIPPED
attr mqtt_schalter1 room MQTT-Test
hat sich dahingehend etwas geändert?
Ich hatte testweise die alten Files wieder hergestellt um die Hardware auszuschließen und es funktionierte sofort wieder.
Heute hatte ich dann das "neuste Update" eingespielt und jetzt ist es so, dass entweder irgendwann ein Timeout kommt und er disconnected ist ein manueller connect funktioniert von ca. 10 Versuchen 1 mal. Ein Neustart vom Hardware-Gateway" bringt auch nichts. Ein FHEM "shutdown restart" oder das Ändern der fhem.cfg mit anschließenden abspeichern bringt manchmal die Geschichte wieder zum laufen.
Gibt es ein Diskussion-Thread wo sich die Entwickler für die Module austauschen, damit man ggf. solche Fehler gleich melden könnte?
Gruß Jens
Hallo,
ich habe über dieses Thema mal ein Blog-Beitrag geschrieben und ein kurzes youtube-video gedreht.
http://blog.moneybag.de/fhem-sensoren-an-fhem-mit-nrf24l01-transceiver/
LG
/robin
Hallo Jens,
Zitat von: fh555 am 10 Oktober 2014, 23:30:27
und ein neues Problem seit den FHEM-Update (gestern und heute) ... Seitdem läuft der MQTT Gateway garnicht bzw. instabil.
define MQTT_MySensors MQTT 192.168.100.250:1883
set MQTT_MySensors connect
das 'set MQTT_MySensors connect' ist unnötig, das MQTT-modul connected selbständig. Das set connect-kommando ist mehr zum testen.
An der Semantik der define-kommandos hat sich nix geändert. Ich habe zwischenzeitlich nach mqtt-spec Quality-Of-Service implementiert (http://forum.fhem.de/index.php/topic,27532.msg206364.html#msg206364), vieleicht ist da noch was fehlerhaft. Kannst Du bitte logs mit 'attr verbose 5' an allen beteiligten Devices (MQTT + MQTT_DEVICE) posten, in denen man Dein Problem nachvollziehen kann?
Gruß,
Norbert
Beide geräte wurden zum Start des Tests neu gestartet.
Erst der FHEM Server, danach der MQTT Gateway
2014.10.12 23:40:22 0: Server started with 47 defined entities (version $Id: fhem.pl 6730 2014-10-09 19:21:23Z rudolfkoenig $, os linux, user fhem, pid 3230)
2014.10.12 23:40:22 5: MQTT MQTT_MySensors message received: ConnAck/at-most-once Connection Accepted
2014.10.12 23:40:22 5: MQTT MQTT_MySensors message sent: Subscribe/at-least-once 1 MyMQTT/71/0/V_LIGHT_LEVEL/at-most-once
2014.10.12 23:40:22 5: SW: 821e000100194d794d5154542f37312f302f565f4c494748545f4c4556454c00
2014.10.12 23:40:22 5: MQTT MQTT_MySensors message sent: Subscribe/at-least-once 2 MyMQTT/60/0/V_TEMP/at-most-once
2014.10.12 23:40:22 5: SW: 8217000200124d794d5154542f36302f302f565f54454d5000
2014.10.12 23:40:22 5: MQTT MQTT_MySensors message sent: Subscribe/at-least-once 3 MyMQTT/60/1/V_TEMP/at-most-once
2014.10.12 23:40:22 5: SW: 8217000300124d794d5154542f36302f312f565f54454d5000
2014.10.12 23:40:22 5: MQTT MQTT_MySensors message sent: Subscribe/at-least-once 4 MyMQTT/10/3/V_TRIPPED/at-most-once
2014.10.12 23:40:22 5: SW: 821a000400154d794d5154542f31302f332f565f5452495050454400
2014.10.12 23:40:22 5: SW: 8a1a000400154d794d5154542f31302f332f565f5452495050454400
2014.10.12 23:40:22 5: SW: 8a1e000100194d794d5154542f37312f302f565f4c494748545f4c4556454c00
2014.10.12 23:40:22 5: SW: 8a17000300124d794d5154542f36302f312f565f54454d5000
2014.10.12 23:40:22 5: SW: 8a17000200124d794d5154542f36302f302f565f54454d5000
2014.10.12 23:40:22 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.12 23:40:22 5: MQTT MQTT_MySensors message received: SubAck/at-most-once 1/at-most-once
2014.10.12 23:40:22 5: MQTT MQTT_MySensors message received: SubAck/at-most-once 2/at-most-once
2014.10.12 23:40:23 5: MQTT MQTT_MySensors message received: SubAck/at-most-once 3/at-most-once
2014.10.12 23:41:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.12 23:41:14 5: SW: c000
2014.10.12 23:42:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.12 23:42:14 5: SW: c000
2014.10.12 23:43:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.12 23:43:14 5: SW: c000
2014.10.12 23:44:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.12 23:44:14 5: SW: c000
2014.10.12 23:44:14 1: 192.168.100.250:1883 disconnected, waiting to reappear (MQTT_MySensors)
2014.10.12 23:44:14 1: 192.168.100.250:1883 reappeared (MQTT_MySensors)
2014.10.12 23:44:14 5: MQTT MQTT_MySensors message sent: Connect/at-most-once MQIsdp/3/Net::MQTT::Message[3230]
2014.10.12 23:44:14 5: SW: 102600064d51497364700302003c00184e65743a3a4d5154543a3a4d6573736167655b333233305d
2014.10.12 23:44:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.12 23:44:14 5: SW: c000
2014.10.12 23:44:14 5: MQTT MQTT_MySensors message received: ConnAck/at-most-once Connection Accepted
2014.10.12 23:44:14 5: MQTT MQTT_MySensors message sent: Subscribe/at-least-once 5 MyMQTT/71/0/V_LIGHT_LEVEL/at-most-once
2014.10.12 23:44:14 5: SW: 821e000500194d794d5154542f37312f302f565f4c494748545f4c4556454c00
2014.10.12 23:44:14 5: MQTT MQTT_MySensors message sent: Subscribe/at-least-once 6 MyMQTT/60/0/V_TEMP/at-most-once
2014.10.12 23:44:14 5: SW: 8217000600124d794d5154542f36302f302f565f54454d5000
2014.10.12 23:44:14 5: MQTT MQTT_MySensors message sent: Subscribe/at-least-once 7 MyMQTT/60/1/V_TEMP/at-most-once
2014.10.12 23:44:14 5: SW: 8217000700124d794d5154542f36302f312f565f54454d5000
2014.10.12 23:44:14 5: MQTT MQTT_MySensors message sent: Subscribe/at-least-once 8 MyMQTT/10/3/V_TRIPPED/at-most-once
2014.10.12 23:44:14 5: SW: 821a000800154d794d5154542f31302f332f565f5452495050454400
2014.10.12 23:44:14 5: SW: 8a1a000800154d794d5154542f31302f332f565f5452495050454400
2014.10.12 23:44:14 5: SW: 8a17000600124d794d5154542f36302f302f565f54454d5000
2014.10.12 23:44:14 5: SW: 8a1a000400154d794d5154542f31302f332f565f5452495050454400
2014.10.12 23:44:14 5: SW: 8a17000700124d794d5154542f36302f312f565f54454d5000
2014.10.12 23:44:14 5: SW: 8a1e000500194d794d5154542f37312f302f565f4c494748545f4c4556454c00
2014.10.12 23:44:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.12 23:44:14 5: MQTT MQTT_MySensors message received: SubAck/at-most-once 5/at-most-once
2014.10.12 23:44:14 5: MQTT MQTT_MySensors message received: SubAck/at-most-once 6/at-most-once
2014.10.12 23:44:14 5: MQTT MQTT_MySensors message received: SubAck/at-most-once 7/at-most-once
2014.10.12 23:44:14 5: MQTT MQTT_MySensors message received: SubAck/at-most-once 4/at-most-once
2014.10.12 23:44:46 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/60/1/V_TEMP
32 36 2e 30 26.0
2014.10.12 23:44:46 5: publish received for MyMQTT/60/1/V_TEMP, 26.0
2014.10.12 23:44:46 5: publish received for MyMQTT/60/1/V_TEMP, 26.0
2014.10.12 23:44:46 5: calling readingsSingleUpdate(mqtt_Temperatur2,state,26.0,1
2014.10.12 23:44:46 5: publish received for MyMQTT/60/1/V_TEMP, 26.0
2014.10.12 23:45:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.12 23:45:14 5: SW: c000
2014.10.12 23:45:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.12 23:45:18 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/60/1/V_TEMP
32 36 2e 31 26.1
2014.10.12 23:45:18 5: publish received for MyMQTT/60/1/V_TEMP, 26.1
2014.10.12 23:45:18 5: publish received for MyMQTT/60/1/V_TEMP, 26.1
2014.10.12 23:45:18 5: calling readingsSingleUpdate(mqtt_Temperatur2,state,26.1,1
2014.10.12 23:45:18 5: publish received for MyMQTT/60/1/V_TEMP, 26.1
2014.10.12 23:46:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.12 23:46:14 5: SW: c000
2014.10.12 23:46:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.12 23:46:23 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/60/0/V_TEMP
32 36 2e 32 26.2
2014.10.12 23:46:23 5: publish received for MyMQTT/60/0/V_TEMP, 26.2
2014.10.12 23:46:23 5: calling readingsSingleUpdate(mqtt_Temperatur1,state,26.2,1
2014.10.12 23:46:23 5: publish received for MyMQTT/60/0/V_TEMP, 26.2
2014.10.12 23:46:23 5: publish received for MyMQTT/60/0/V_TEMP, 26.2
2014.10.12 23:46:55 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/60/0/V_TEMP
32 36 2e 31 26.1
2014.10.12 23:46:55 5: publish received for MyMQTT/60/0/V_TEMP, 26.1
2014.10.12 23:46:55 5: calling readingsSingleUpdate(mqtt_Temperatur1,state,26.1,1
2014.10.12 23:46:55 5: publish received for MyMQTT/60/0/V_TEMP, 26.1
2014.10.12 23:46:55 5: publish received for MyMQTT/60/0/V_TEMP, 26.1
2014.10.12 23:47:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.12 23:47:14 5: SW: c000
2014.10.12 23:47:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.12 23:47:18 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/10/3/V_TRIPPED
2014.10.12 23:47:18 5: publish received for MyMQTT/10/3/V_TRIPPED, 0
2014.10.12 23:47:18 5: publish received for MyMQTT/10/3/V_TRIPPED, 0
2014.10.12 23:47:18 5: publish received for MyMQTT/10/3/V_TRIPPED, 0
2014.10.12 23:47:18 5: calling readingsSingleUpdate(mqtt_schalter1,state,0,1
2014.10.12 23:47:18 2: IT set B_Dose_Fenster_LED on
2014.10.12 23:47:24 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/10/3/V_TRIPPED
31 1
2014.10.12 23:47:24 5: publish received for MyMQTT/10/3/V_TRIPPED, 1
2014.10.12 23:47:24 5: publish received for MyMQTT/10/3/V_TRIPPED, 1
2014.10.12 23:47:24 5: publish received for MyMQTT/10/3/V_TRIPPED, 1
2014.10.12 23:47:24 2: IT set B_Dose_Fenster_LED on
2014.10.12 23:47:24 5: calling readingsSingleUpdate(mqtt_schalter1,state,1,1
2014.10.12 23:47:45 2: IT set B_Dose_Fenster_LED off
2014.10.12 23:47:50 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/10/3/V_TRIPPED
2014.10.12 23:47:50 5: publish received for MyMQTT/10/3/V_TRIPPED, 0
2014.10.12 23:47:50 5: publish received for MyMQTT/10/3/V_TRIPPED, 0
2014.10.12 23:47:50 5: publish received for MyMQTT/10/3/V_TRIPPED, 0
2014.10.12 23:47:50 5: calling readingsSingleUpdate(mqtt_schalter1,state,0,1
2014.10.12 23:47:50 2: IT set B_Dose_Fenster_LED on
2014.10.12 23:47:51 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/10/3/V_TRIPPED
31 1
2014.10.12 23:47:51 5: publish received for MyMQTT/10/3/V_TRIPPED, 1
2014.10.12 23:47:51 5: publish received for MyMQTT/10/3/V_TRIPPED, 1
2014.10.12 23:47:51 5: publish received for MyMQTT/10/3/V_TRIPPED, 1
2014.10.12 23:47:51 2: IT set B_Dose_Fenster_LED on
2014.10.12 23:47:51 5: calling readingsSingleUpdate(mqtt_schalter1,state,1,1
2014.10.12 23:48:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.12 23:48:14 5: SW: c000
2014.10.12 23:48:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.12 23:48:32 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/60/0/V_TEMP
32 36 2e 32 26.2
2014.10.12 23:48:32 5: publish received for MyMQTT/60/0/V_TEMP, 26.2
2014.10.12 23:48:32 5: calling readingsSingleUpdate(mqtt_Temperatur1,state,26.2,1
2014.10.12 23:48:32 5: publish received for MyMQTT/60/0/V_TEMP, 26.2
2014.10.12 23:48:32 5: publish received for MyMQTT/60/0/V_TEMP, 26.2
2014.10.12 23:49:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.12 23:49:14 5: SW: c000
2014.10.12 23:49:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.12 23:50:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.12 23:50:14 5: SW: c000
2014.10.12 23:50:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.12 23:51:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.12 23:51:14 5: SW: c000
2014.10.12 23:51:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.12 23:52:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.12 23:52:14 5: SW: c000
2014.10.12 23:52:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.12 23:53:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.12 23:53:14 5: SW: c000
2014.10.12 23:53:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.12 23:53:55 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/60/0/V_TEMP
32 36 2e 33 26.3
2014.10.12 23:53:55 5: publish received for MyMQTT/60/0/V_TEMP, 26.3
2014.10.12 23:53:55 5: calling readingsSingleUpdate(mqtt_Temperatur1,state,26.3,1
2014.10.12 23:53:55 5: publish received for MyMQTT/60/0/V_TEMP, 26.3
2014.10.12 23:53:55 5: publish received for MyMQTT/60/0/V_TEMP, 26.3
2014.10.12 23:54:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.12 23:54:14 5: SW: c000
2014.10.12 23:54:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.12 23:54:27 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/60/0/V_TEMP
32 36 2e 32 26.2
2014.10.12 23:54:27 5: publish received for MyMQTT/60/0/V_TEMP, 26.2
2014.10.12 23:54:27 5: calling readingsSingleUpdate(mqtt_Temperatur1,state,26.2,1
2014.10.12 23:54:27 5: publish received for MyMQTT/60/0/V_TEMP, 26.2
2014.10.12 23:54:27 5: publish received for MyMQTT/60/0/V_TEMP, 26.2
2014.10.12 23:55:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.12 23:55:14 5: SW: c000
2014.10.12 23:55:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.12 23:56:04 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/60/0/V_TEMP
32 36 2e 33 26.3
2014.10.12 23:56:04 5: publish received for MyMQTT/60/0/V_TEMP, 26.3
2014.10.12 23:56:04 5: calling readingsSingleUpdate(mqtt_Temperatur1,state,26.3,1
2014.10.12 23:56:04 5: publish received for MyMQTT/60/0/V_TEMP, 26.3
2014.10.12 23:56:04 5: publish received for MyMQTT/60/0/V_TEMP, 26.3
2014.10.12 23:56:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.12 23:56:14 5: SW: c000
2014.10.12 23:56:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.12 23:57:08 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/60/0/V_TEMP
33 31 2e 31 31.1
2014.10.12 23:57:08 5: publish received for MyMQTT/60/0/V_TEMP, 31.1
2014.10.12 23:57:08 5: calling readingsSingleUpdate(mqtt_Temperatur1,state,31.1,1
2014.10.12 23:57:08 5: publish received for MyMQTT/60/0/V_TEMP, 31.1
2014.10.12 23:57:08 5: publish received for MyMQTT/60/0/V_TEMP, 31.1
2014.10.12 23:57:09 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/60/1/V_TEMP
32 36 2e 33 26.3
2014.10.12 23:57:09 5: publish received for MyMQTT/60/1/V_TEMP, 26.3
2014.10.12 23:57:09 5: publish received for MyMQTT/60/1/V_TEMP, 26.3
2014.10.12 23:57:09 5: calling readingsSingleUpdate(mqtt_Temperatur2,state,26.3,1
2014.10.12 23:57:09 5: publish received for MyMQTT/60/1/V_TEMP, 26.3
2014.10.12 23:57:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.12 23:57:14 5: SW: c000
2014.10.12 23:57:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.12 23:57:41 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/60/0/V_TEMP
32 37 2e 38 27.8
2014.10.12 23:57:41 5: publish received for MyMQTT/60/0/V_TEMP, 27.8
2014.10.12 23:57:41 5: calling readingsSingleUpdate(mqtt_Temperatur1,state,27.8,1
2014.10.12 23:57:41 5: publish received for MyMQTT/60/0/V_TEMP, 27.8
2014.10.12 23:57:41 5: publish received for MyMQTT/60/0/V_TEMP, 27.8
2014.10.12 23:57:41 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/60/1/V_TEMP
32 36 2e 37 26.7
2014.10.12 23:57:41 5: publish received for MyMQTT/60/1/V_TEMP, 26.7
2014.10.12 23:57:41 5: publish received for MyMQTT/60/1/V_TEMP, 26.7
2014.10.12 23:57:41 5: calling readingsSingleUpdate(mqtt_Temperatur2,state,26.7,1
2014.10.12 23:57:41 5: publish received for MyMQTT/60/1/V_TEMP, 26.7
2014.10.12 23:58:13 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/60/0/V_TEMP
32 37 2e 30 27.0
2014.10.12 23:58:13 5: publish received for MyMQTT/60/0/V_TEMP, 27.0
2014.10.12 23:58:13 5: calling readingsSingleUpdate(mqtt_Temperatur1,state,27.0,1
2014.10.12 23:58:13 5: publish received for MyMQTT/60/0/V_TEMP, 27.0
2014.10.12 23:58:13 5: publish received for MyMQTT/60/0/V_TEMP, 27.0
2014.10.12 23:58:13 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/60/1/V_TEMP
32 36 2e 34 26.4
2014.10.12 23:58:13 5: publish received for MyMQTT/60/1/V_TEMP, 26.4
2014.10.12 23:58:13 5: publish received for MyMQTT/60/1/V_TEMP, 26.4
2014.10.12 23:58:13 5: calling readingsSingleUpdate(mqtt_Temperatur2,state,26.4,1
2014.10.12 23:58:13 5: publish received for MyMQTT/60/1/V_TEMP, 26.4
2014.10.12 23:58:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.12 23:58:14 5: SW: c000
2014.10.12 23:58:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.12 23:58:45 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/10/3/V_TRIPPED
2014.10.12 23:58:45 5: publish received for MyMQTT/10/3/V_TRIPPED, 0
2014.10.12 23:58:45 5: publish received for MyMQTT/10/3/V_TRIPPED, 0
2014.10.12 23:58:45 5: publish received for MyMQTT/10/3/V_TRIPPED, 0
2014.10.12 23:58:45 5: calling readingsSingleUpdate(mqtt_schalter1,state,0,1
2014.10.12 23:58:45 2: IT set B_Dose_Fenster_LED on
2014.10.12 23:58:46 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/60/0/V_TEMP
32 36 2e 38 26.8
2014.10.12 23:58:46 5: publish received for MyMQTT/60/0/V_TEMP, 26.8
2014.10.12 23:58:46 5: calling readingsSingleUpdate(mqtt_Temperatur1,state,26.8,1
2014.10.12 23:58:46 5: publish received for MyMQTT/60/0/V_TEMP, 26.8
2014.10.12 23:58:46 5: publish received for MyMQTT/60/0/V_TEMP, 26.8
2014.10.12 23:58:46 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/60/1/V_TEMP
32 36 2e 33 26.3
2014.10.12 23:58:46 5: publish received for MyMQTT/60/1/V_TEMP, 26.3
2014.10.12 23:58:46 5: publish received for MyMQTT/60/1/V_TEMP, 26.3
2014.10.12 23:58:46 5: calling readingsSingleUpdate(mqtt_Temperatur2,state,26.3,1
2014.10.12 23:58:46 5: publish received for MyMQTT/60/1/V_TEMP, 26.3
2014.10.12 23:58:53 5: MQTT MQTT_MySensors message received: Publish/at-most-once MyMQTT/10/3/V_TRIPPED
31 1
2014.10.12 23:58:53 5: publish received for MyMQTT/10/3/V_TRIPPED, 1
2014.10.12 23:58:53 5: publish received for MyMQTT/10/3/V_TRIPPED, 1
2014.10.12 23:58:53 5: publish received for MyMQTT/10/3/V_TRIPPED, 1
2014.10.12 23:58:53 2: IT set B_Dose_Fenster_LED on
2014.10.12 23:58:53 5: calling readingsSingleUpdate(mqtt_schalter1,state,1,1
ser. Monitor nach Neustart
Started!
<<10 26 00 06 4D 51 49 73 64 70 03 02 00 3C 00 18 4E 65 74 3A 3A 4D 51 54 54 3A 3A 4D 65 73 73 61 67 65 5B 33 32 33 30 5D
>>20 02 00 00
<<C0 00
>>D0 00
<<82 1E 00 05 00 19 4D 79 4D 51 54 54 2F 37 31 2F 30 2F 56 5F 4C 49 47 48 54 5F 4C 45 56 45 4C 00
>>90 03 00 05 00
0;0;3;0;9;send: 0-0-71-71 s=0,c=1,t=23,pt=0,l=0,st=fail:
<<82 17 00 06 00 12 4D 79 4D 51 54 54 2F 36 30 2F 30 2F 56 5F 54 45 4D 50 00
>>90 03 00 06 00
0;0;3;0;9;send: 0-0-60-60 s=0,c=1,t=0,pt=0,l=0,st=fail:
<<82 17 00 07 00 12 4D 79 4D 51 54 54 2F 36 30 2F 31 2F 56 5F 54 45 4D 50 00 82 1A 00 08 00 15 4D 79 4D 51 54 54 2F 31 30 2F 33 2F 56 5F 54 52 49 50 50 45 44 00 8A 1A 00 08 00 15 4D 79 4D 51 54 54 2F 31 30 2F 33 2F 56 5F 54 52 49 50 50 45 44 00 8A 17 00 06 00 12 4D 79 4D 51 54 54 2F 36 30 2F 30 2F 56 5F 54 45 4D 50 00
>>90 03 00 07 00
0;0;3;0;9;send: 0-0-60-60 s=1,c=1,t=0,pt=0,l=0,st=fail:
<<8A 1A 00 04 00 15 4D 79 4D 51 54 54 2F 31 30 2F 33 2F 56 5F 54 52 49 50 50 45 44 00 8A 17 00 07 00 12 4D 79 4D 51 54 54 2F 36 30 2F 31 2F 56 5F 54 45 4D 50 00 8A 1E 00 05 00 19 4D 79 4D 51 54 54 2F 37 31 2F 30 2F 56 5F 4C 49 47 48 54 5F 4C 45 56 45 4C 00
>>90 03 00 04 00
0;0;3;0;9;send: 0-0-10-10 s=3,c=1,t=16,pt=0,l=0,st=ok:
0;0;3;0;9;read: 60-60-0 s=1,c=1,t=0,pt=7,l=5:26.0
MyMQTT/60/1/V_TEMP
>>30 18 00 12 4D 79 4D 51 54 54 2F 36 30 2F 31 2F 56 5F 54 45 4D 50 32 36 2E 30
<<C0 00
>>D0 00
0;0;3;0;9;read: 60-60-0 s=1,c=1,t=0,pt=7,l=5:26.1
MyMQTT/60/1/V_TEMP
>>30 18 00 12 4D 79 4D 51 54 54 2F 36 30 2F 31 2F 56 5F 54 45 4D 50 32 36 2E 31
<<C0 00
>>D0 00
0;0;3;0;9;read: 60-60-0 s=0,c=1,t=0,pt=7,l=5:26.2
MyMQTT/60/0/V_TEMP
>>30 18 00 12 4D 79 4D 51 54 54 2F 36 30 2F 30 2F 56 5F 54 45 4D 50 32 36 2E 32
0;0;3;0;9;read: 60-60-0 s=0,c=1,t=0,pt=7,l=5:26.1
MyMQTT/60/0/V_TEMP
>>30 18 00 12 4D 79 4D 51 54 54 2F 36 30 2F 30 2F 56 5F 54 45 4D 50 32 36 2E 31
<<C0 00
>>D0 00
0;0;3;0;9;read: 10-10-0 s=3,c=1,t=16,pt=2,l=2:0
MyMQTT/10/3/V_TRIPPED
>>30 18 00 15 4D 79 4D 51 54 54 2F 31 30 2F 33 2F 56 5F 54 52 49 50 50 45 44 30
0;0;3;0;9;read: 10-10-0 s=3,c=1,t=16,pt=2,l=2:1
MyMQTT/10/3/V_TRIPPED
>>30 18 00 15 4D 79 4D 51 54 54 2F 31 30 2F 33 2F 56 5F 54 52 49 50 50 45 44 31
0;0;3;0;9;read: 10-10-0 s=3,c=1,t=16,pt=2,l=2:0
MyMQTT/10/3/V_TRIPPED
>>30 18 00 15 4D 79 4D 51 54 54 2F 31 30 2F 33 2F 56 5F 54 52 49 50 50 45 44 30
0;0;3;0;9;read: 10-10-0 s=3,c=1,t=16,pt=2,l=2:1
MyMQTT/10/3/V_TRIPPED
>>30 18 00 15 4D 79 4D 51 54 54 2F 31 30 2F 33 2F 56 5F 54 52 49 50 50 45 44 31
<<C0 00
>>D0 00
0;0;3;0;9;read: 60-60-0 s=0,c=1,t=0,pt=7,l=5:26.2
MyMQTT/60/0/V_TEMP
>>30 18 00 12 4D 79 4D 51 54 54 2F 36 30 2F 30 2F 56 5F 54 45 4D 50 32 36 2E 32
<<C0 00
>>D0 00
<<C0 00
>>D0 00
<<C0 00
>>D0 00
<<C0 00
>>D0 00
<<C0 00
>>D0 00
0;0;3;0;9;read: 60-60-0 s=0,c=1,t=0,pt=7,l=5:26.3
MyMQTT/60/0/V_TEMP
>>30 18 00 12 4D 79 4D 51 54 54 2F 36 30 2F 30 2F 56 5F 54 45 4D 50 32 36 2E 33
<<C0 00
>>D0 00
0;0;3;0;9;read: 60-60-0 s=0,c=1,t=0,pt=7,l=5:26.2
MyMQTT/60/0/V_TEMP
>>30 18 00 12 4D 79 4D 51 54 54 2F 36 30 2F 30 2F 56 5F 54 45 4D 50 32 36 2E 32
<<C0 00
>>D0 00
0;0;3;0;9;read: 60-60-0 s=0,c=1,t=0,pt=7,l=5:26.3
MyMQTT/60/0/V_TEMP
>>30 18 00 12 4D 79 4D 51 54 54 2F 36 30 2F 30 2F 56 5F 54 45 4D 50 32 36 2E 33
<<C0 00
>>D0 00
0;0;3;0;9;read: 60-60-0 s=0,c=1,t=0,pt=7,l=5:31.1
MyMQTT/60/0/V_TEMP
>>30 18 00 12 4D 79 4D 51 54 54 2F 36 30 2F 30 2F 56 5F 54 45 4D 50 33 31 2E 31
0;0;3;0;9;read: 60-60-0 s=1,c=1,t=0,pt=7,l=5:26.3
MyMQTT/60/1/V_TEMP
>>30 18 00 12 4D 79 4D 51 54 54 2F 36 30 2F 31 2F 56 5F 54 45 4D 50 32 36 2E 33
<<C0 00
>>D0 00
0;0;3;0;9;read: 60-60-0 s=0,c=1,t=0,pt=7,l=5:27.8
MyMQTT/60/0/V_TEMP
>>30 18 00 12 4D 79 4D 51 54 54 2F 36 30 2F 30 2F 56 5F 54 45 4D 50 32 37 2E 38
0;0;3;0;9;read: 60-60-0 s=1,c=1,t=0,pt=7,l=5:26.7
MyMQTT/60/1/V_TEMP
>>30 18 00 12 4D 79 4D 51 54 54 2F 36 30 2F 31 2F 56 5F 54 45 4D 50 32 36 2E 37
0;0;3;0;9;read: 60-60-0 s=0,c=1,t=0,pt=7,l=5:27.0
MyMQTT/60/0/V_TEMP
>>30 18 00 12 4D 79 4D 51 54 54 2F 36 30 2F 30 2F 56 5F 54 45 4D 50 32 37 2E 30
0;0;3;0;9;read: 60-60-0 s=1,c=1,t=0,pt=7,l=5:26.4
MyMQTT/60/1/V_TEMP
>>30 18 00 12 4D 79 4D 51 54 54 2F 36 30 2F 31 2F 56 5F 54 45 4D 50 32 36 2E 34
<<C0 00
>>D0 00
0;0;3;0;9;read: 10-10-0 s=3,c=1,t=16,pt=2,l=2:0
MyMQTT/10/3/V_TRIPPED
>>30 18 00 15 4D 79 4D 51 54 54 2F 31 30 2F 33 2F 56 5F 54 52 49 50 50 45 44 30
0;0;3;0;9;read: 60-60-0 s=0,c=1,t=0,pt=7,l=5:26.8
MyMQTT/60/0/V_TEMP
>>30 18 00 12 4D 79 4D 51 54 54 2F 36 30 2F 30 2F 56 5F 54 45 4D 50 32 36 2E 38
0;0;3;0;9;read: 60-60-0 s=1,c=1,t=0,pt=7,l=5:26.3
MyMQTT/60/1/V_TEMP
>>30 18 00 12 4D 79 4D 51 54 54 2F 36 30 2F 31 2F 56 5F 54 45 4D 50 32 36 2E 33
0;0;3;0;9;read: 10-10-0 s=3,c=1,t=16,pt=2,l=2:1
MyMQTT/10/3/V_TRIPPED
>>30 18 00 15 4D 79 4D 51 54 54 2F 31 30 2F 33 2F 56 5F 54 52 49 50 50 45 44 31
<<C0 00
>>D0 00
0;0;3;0;9;read: 60-60-0 s=0,c=1,t=0,pt=7,l=5:26.6
MyMQTT/60/0/V_TEMP
>>30 18 00 12 4D 79 4D 51 54 54 2F 36 30 2F 30 2F 56 5F 54 45 4D 50 32 36 2E 36
0;0;3;0;9;read: 60-60-0 s=0,c=1,t=0,pt=7,l=5:26.5
MyMQTT/60/0/V_TEMP
>>30 18 00 12 4D 79 4D 51 54 54 2F 36 30 2F 30 2F 56 5F 54 45 4D 50 32 36 2E 35
<<C0 00
>>D0 00
Momentan läüft es, kommt nur darauf wie lange .....
Momentan in den jetzigen Testbetrieb:
Schalter1
Temperatur 1 + 2
Mit den Definitionen:
define MQTT_MySensors MQTT 192.168.100.250:1883
#set MQTT_MySensors connect
attr MQTT_MySensors keep-alive 60
attr MQTT_MySensors verbose 5
# #####################################################
# MQTT_DEVICE / NRF24L01+ / MySensors / 2,4 Ghz
# *****************************************************
define mqtt_schalter1 MQTT_DEVICE
attr mqtt_schalter1 IODev MQTT_MySensors
attr mqtt_schalter1 alias Schalter 1
attr mqtt_schalter1 stateFormat transmission-state
#attr mqtt_schalter1 stateFormat state
attr mqtt_schalter1 subscribeReading_state MyMQTT/10/3/V_TRIPPED
attr mqtt_schalter1 room MQTT-Test
attr mqtt_schalter1 verbose 5
#define mqtt_pir1 MQTT_DEVICE
#attr mqtt_pir1 IODev MQTT_MySensors
#attr mqtt_pir1 alias Pir 1
#attr mqtt_pir1 stateFormat state
#attr mqtt_pir1 subscribeReading_state MyMQTT/40/1/V_TRIPPED
#attr mqtt_pir1 room MQTT-Test
define Pflanze MQTT_DEVICE
attr Pflanze IODev MQTT_MySensors
#attr Pflanze stateFormat transmission-state
attr Pflanze stateFormat state
attr Pflanze subscribeReading_state MyMQTT/71/0/V_LIGHT_LEVEL
attr Pflanze room MQTT-Test
define mqtt_Temperatur1 MQTT_DEVICE
attr mqtt_Temperatur1 IODev MQTT_MySensors
#attr mqtt_Temperatur1 stateFormat transmission-state
attr mqtt_Temperatur1 stateFormat state
attr mqtt_Temperatur1 subscribeReading_state MyMQTT/60/0/V_TEMP
attr mqtt_Temperatur1 room MQTT-Test
attr mqtt_Temperatur1 verbose 5
define mqtt_Temperatur2 MQTT_DEVICE
attr mqtt_Temperatur2 IODev MQTT_MySensors
#attr mqtt_Temperatur2 stateFormat transmission-state
attr mqtt_Temperatur2 stateFormat state
attr mqtt_Temperatur2 subscribeReading_state MyMQTT/60/1/V_TEMP
attr mqtt_Temperatur2 room MQTT-Test
attr mqtt_Temperatur2 verbose 5
define schalter1machwas notify mqtt_schalter1 { if (ReadingsVal("mqtt_schalter1","state", "not found") eq "0") { fhem "set B_Dose_Fenster_LED on" } }
ab 00:19 funktioniert es nicht mehr :-(
Zitat
2014.10.13 00:19:44 5: publish received for MyMQTT/60/0/V_TEMP, 26.1
2014.10.13 00:19:44 5: calling readingsSingleUpdate(mqtt_Temperatur1,state,26.1,1
2014.10.13 00:19:44 5: publish received for MyMQTT/60/0/V_TEMP, 26.1
2014.10.13 00:19:44 5: publish received for MyMQTT/60/0/V_TEMP, 26.1
2014.10.13 00:20:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:20:14 5: SW: c000
2014.10.13 00:20:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.13 00:21:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:21:14 5: SW: c000
2014.10.13 00:21:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.13 00:22:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:22:14 5: SW: c000
2014.10.13 00:22:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.13 00:23:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:23:14 5: SW: c000
2014.10.13 00:23:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.13 00:24:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:24:14 5: SW: c000
2014.10.13 00:24:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:25:14 5: SW: c000
2014.10.13 00:25:14 1: 192.168.100.250:1883 disconnected, waiting to reappear (MQTT_MySensors)
2014.10.13 00:25:14 1: 192.168.100.250:1883 reappeared (MQTT_MySensors)
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message sent: Connect/at-most-once MQIsdp/3/Net::MQTT::Message[3230]
2014.10.13 00:25:14 5: SW: 102600064d51497364700302003c00184e65743a3a4d5154543a3a4d6573736167655b333233305d
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:25:14 5: SW: c000
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message received: ConnAck/at-most-once Connection Accepted
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message sent: Subscribe/at-least-once 9 MyMQTT/71/0/V_LIGHT_LEVEL/at-most-once
2014.10.13 00:25:14 5: SW: 821e000900194d794d5154542f37312f302f565f4c494748545f4c4556454c00
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message sent: Subscribe/at-least-once 10 MyMQTT/60/0/V_TEMP/at-most-once
2014.10.13 00:25:14 5: SW: 8217000a00124d794d5154542f36302f302f565f54454d5000
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message sent: Subscribe/at-least-once 11 MyMQTT/60/1/V_TEMP/at-most-once
2014.10.13 00:25:14 5: SW: 8217000b00124d794d5154542f36302f312f565f54454d5000
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message sent: Subscribe/at-least-once 12 MyMQTT/10/3/V_TRIPPED/at-most-once
2014.10.13 00:25:14 5: SW: 821a000c00154d794d5154542f31302f332f565f5452495050454400
2014.10.13 00:25:14 5: SW: 8a1a000800154d794d5154542f31302f332f565f5452495050454400
2014.10.13 00:25:14 5: SW: 8a17000b00124d794d5154542f36302f312f565f54454d5000
2014.10.13 00:25:14 5: SW: 8a17000a00124d794d5154542f36302f302f565f54454d5000
2014.10.13 00:25:14 5: SW: 8a1e000900194d794d5154542f37312f302f565f4c494748545f4c4556454c00
2014.10.13 00:25:14 5: SW: 8a1a000c00154d794d5154542f31302f332f565f5452495050454400
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message received: SubAck/at-most-once 9/at-most-once
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message received: SubAck/at-most-once 10/at-most-once
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message received: SubAck/at-most-once 11/at-most-once
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message received: SubAck/at-most-once 8/at-most-once
Ich habe 00:25 den Schalter1 ausgelöst und ohne Funktion :-(
Die Temperaturwerte wurden auch nicht mehr aktualisiert
Internals
IODev
MQTT_MySensors
NAME
mqtt_Temperatur1
NR
52
STATE
26.1
TYPE
MQTT_DEVICE
qos
0
retain
0
Readings
state
26.1
2014-10-13 00:19:44
transmission-state
subscription acknowledged
2014-10-13 00:25:14
mqtt_Temperatur1
Attributes
IODev
MQTT_MySensors
deleteattr
room
MQTT-Test
deleteattr
stateFormat
state
deleteattr
subscribeReading_state
MyMQTT/60/0/V_TEMP
deleteattr
verbose 5
deleteattr
und wieder "eingeschalfen" :-(
2014.10.13 00:25:14 5: SW: c000
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message received: ConnAck/at-most-once Connection Accepted
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message sent: Subscribe/at-least-once 9 MyMQTT/71/0/V_LIGHT_LEVEL/at-most-once
2014.10.13 00:25:14 5: SW: 821e000900194d794d5154542f37312f302f565f4c494748545f4c4556454c00
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message sent: Subscribe/at-least-once 10 MyMQTT/60/0/V_TEMP/at-most-once
2014.10.13 00:25:14 5: SW: 8217000a00124d794d5154542f36302f302f565f54454d5000
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message sent: Subscribe/at-least-once 11 MyMQTT/60/1/V_TEMP/at-most-once
2014.10.13 00:25:14 5: SW: 8217000b00124d794d5154542f36302f312f565f54454d5000
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message sent: Subscribe/at-least-once 12 MyMQTT/10/3/V_TRIPPED/at-most-once
2014.10.13 00:25:14 5: SW: 821a000c00154d794d5154542f31302f332f565f5452495050454400
2014.10.13 00:25:14 5: SW: 8a1a000800154d794d5154542f31302f332f565f5452495050454400
2014.10.13 00:25:14 5: SW: 8a17000b00124d794d5154542f36302f312f565f54454d5000
2014.10.13 00:25:14 5: SW: 8a17000a00124d794d5154542f36302f302f565f54454d5000
2014.10.13 00:25:14 5: SW: 8a1e000900194d794d5154542f37312f302f565f4c494748545f4c4556454c00
2014.10.13 00:25:14 5: SW: 8a1a000c00154d794d5154542f31302f332f565f5452495050454400
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message received: PingResp/at-most-once
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message received: SubAck/at-most-once 9/at-most-once
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message received: SubAck/at-most-once 10/at-most-once
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message received: SubAck/at-most-once 11/at-most-once
2014.10.13 00:25:14 5: MQTT MQTT_MySensors message received: SubAck/at-most-once 8/at-most-once
2014.10.13 00:26:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:26:14 5: SW: c000
2014.10.13 00:27:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:27:14 5: SW: c000
2014.10.13 00:28:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:28:14 5: SW: c000
2014.10.13 00:29:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:29:14 5: SW: c000
2014.10.13 00:30:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:30:14 5: SW: c000
2014.10.13 00:31:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:31:14 5: SW: c000
2014.10.13 00:32:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:32:14 5: SW: c000
2014.10.13 00:33:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:33:14 5: SW: c000
2014.10.13 00:34:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:34:14 5: SW: c000
2014.10.13 00:35:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:35:14 5: SW: c000
2014.10.13 00:36:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:36:14 5: SW: c000
2014.10.13 00:37:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:37:14 5: SW: c000
2014.10.13 00:38:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:38:14 5: SW: c000
2014.10.13 00:39:14 5: MQTT MQTT_MySensors message sent: PingReq/at-most-once
2014.10.13 00:39:14 5: SW: c000
DEF
192.168.100.250:1883
DeviceName
192.168.100.250:1883
FD
4
NAME
MQTT_MySensors
NOTIFYDEV
global
NR
32
NTFY_ORDER
50-MQTT_MySensors
PARTIAL
STATE
opened
TYPE
MQTT
buf
msgid
13
ping_received
0
timeout
60
Readings
connection
timed-out
2014-10-13 00:41:14
@fh555:
Nach den Logs meldet sich die Gegenstelle (192.168.100.250) ja einfach ab (d.h. die Verbindung bricht ab, ist ja kein sauberer Disconnect über das mqtt-protokoll). was läuft denn unter '192.168.100.250'? Ist dass das MySensors MQTT-gateway, oder ein mosquitto-broker?
Während die Gegenstelle abgemeldet ist, kann nichts ankommen. Und nachgeliefert wird das auch nur, wenn der Sensor das mit 'retain' an den Broker senden würde (und der Broker nicht zwischendurch abstürzt)...
Und schau mal nach meinem Beitrag (http://forum.fhem.de/index.php/topic,27725.msg207882.html#msg207882) zu Deinem notify.
Gruß,
Norbert
hallo,
fh555 kann gerade nicht anworten, weil er im Urlaub ist.
Was anderes: ich habe zwei 18B20 parallel auf einer Platine geschaltet, wie spreche ich die mit Fhem an?
Die melden sich im Arduino mit
MyMQTT/21/0/V_TEMP
MyMQTT/21/1/V_TEMP
wenn ich einen
attr mySensorsTemp autoSubscribeReadings MyMQTT/21/+/V_TEMP
mit wildcards mache, findet er nur den ersten Sensor.
Vielen Dank noch für die positiven Bewertungen in meinem Blog-Beitrag.
LG
/robin
Ich hab das grade im Trockenlauf getestet, funktioniert. (In Ermangelung von MySensors-sensoren habe ich die mqtt-messages habe ich mit 'mosquitto_pub -h 192.168.1.4 -t MyMQTT/21/0/V_TEMP -m "wert1"' bzw. 'mosquitto_pub -h 192.168.1.4 -t MyMQTT/21/1/V_TEMP -m "wert2"' geschickt).
Muss also irgendwo außerhalb von fhem liegen. Du kannst mit attr verbose 5 an den MQTT-devices den loglevel so einstellen, dass Du alle von FHEM geschickten und empfangenen Messages detailiert sehen kannst.
Du darfst in Deinem Blog übrigens ruhig konkret angeben, wer die MQTT-module geschrieben hat.
gruß
Hallo,
ich sehe gerade bei den Attributen:
ich dachte wenn ich autoSubscribeReadings mache, werden alles automatisch erkannt.
Muss man dann mit Subscribe Reading trotzdem jeden Sensor nochmal einzeln benennen?
Teste ich heute mal nach. Mosquitto habe ich nicht.
Der Blog-Beitrag ist geändert: http://blog.moneybag.de/fhem-sensoren-an-fhem-mit-nrf24l01-transceiver/
Ist mir gerade noch aufgefallen: Wenn ich einen Doppelklick auf subscribeReading_V_TEMP mache, ändert sich nicht die Dropdown-Box, sodass ich einen Wert in das Text-Feld daneben eingeben kann. Man sagt ja hier, man soll nicht in der config rumspielen.
Wie "erkennt" der Broker, das ein Sensor ausgefallen ist, bzw. ob er ein Signal nicht erhalten hat. Ich habe irgendwo gelesen, da man auch Schaltvorgänge (z.b. Relays) damit machen kann MyMQTT/irgendwas/irgendwie ist ja nur ein Kanal, in dem etwas stattfindet.
LG
/robin
die passenden subscribeReading_xxx-attribute werden beim Eintreffen von Nachrichten anhand des Topics automatisch erzeugt. Sobald alle da sind, kann man das autosubscribeReadings wieder rausnehmen. Funktioniert natürlich nur, wenn der Sensor auch Daten schickt.
Was setzt Du für einen mqtt-broker ein?
das Webinterface unterstützt bisher leider keine Wildcard-attribute ('subscribeReading_.*') und da Attribute pro modul-typ und nicht pro Instanz definiert werden, kann man die konkret gesetzten Attribute auch nicht sinnvoll dynmisch zur Liste der editierbaren (instanzspezifischen) Attribute hinzufügen.
Du kannst das aber als kommando 'attr XXX subscribeReading_V_TEMP MyMQTT/21/0/V_TEMP' einfach oben in der Kommandozeile der Weboberfläche absetzen, dann muss Du die fhem.cfg auch nicht von Hand editieren.
Der Broker kann überhaupt nicht erkennen, ob ein Sensor ausgefallen ist, der bekommt einfach keine Nachrichten mehr vom mqtt-gateway. Der Broker kann nur erkennen, wenn das MySensors mqtt-Gateway ausfällt. Prinzipiell könnte eine Sensorüberwachung im mqtt-gateway realisiert werden, aber wenn ich den Code richtig verstehe macht das auch nix anderes als zwischen Funknachrichten und dem mqtt-broker zu mediieren.
Gruß,
Norbert
Werde ich heute abend mal ausprobieren.
ich nutze das MQTT-Gateway von mySensors und Fhem.
Erfährt denn der Broker wenn ein Signal empfangen / nicht empfangen worden ist? Ich denke da so an einer preiswerten Ersatzlösung von HM.
Hm, hab grade mal einen genaueren Blick in die sourcen des mqtt-gateways geworfen. Das implementiert ja gar keinen mqtt-client, sondern eine (unvollständige) mqtt-broker Schnittstelle. Ich halte das nicht wirklich für schlau, weil das mqtt-Protokoll da eben nur teilweise umgesetzt ist, tatsächliche Subscriptions werden nicht unterstützt, qos feht völlig, der verbundene mqtt-client wird daher keine gesendeten Messages freigeben, wenn qos > 0 verwendet wird. Das wird man auch nur bedingt aufbohren können, weil so ein Arduino ja nur sehr geringe System-resourcen hat. Man könnte nun zwar einen mqtt-broker dazwischensetzen (und eine sogenannte Bridge zum mqtt-gateway konfigurieren), das verlagert das Problem aber nur, weil ja auch da (in der Broker<->Gateway Kommunikation) der Broker davon ausgeht mit einem Broker und nicht einem Client zu kommunizieren. Ist mir schleierhaft, warum hier nicht einfach ein MQTT-client implementiert wurde - der würde mit weniger Resourcen trotzdem Spec-konform arbeiten können. Das man sich so einen separaten mqtt-broker spart ist eigentlich kein richtiges Argument. Mosquitto z.B. ist ziemlich schlank, bei mir braucht der Prozess keine 15MB virtuellen und unter 1MB realen Speicher. Und das Einbinden in eine größere Installation (mit zentralem mqtt-broker und anderen über mqtt angebundenen - nicht MySensors - Sensoren und Aktoren) wird so auch zu einem ziemlichen Gebastel.
Ich will da jetzt nicht über ein fremdes Projekt meckern - das ist schließlich Kost-nix Open-Source und jeder darf gerne was dazu beitragen um es zu verbessern und dem Autor des gateways taugt es wohl auch. (Wenn ich mal Zeit und Lust dafür habe, schreibe ich das mal auf einen mqtt-client um)
Für die MySensors-integration in FHEM über mqtt heißt dass aber auch: Alles was nicht geht, weil das mqtt-gateway nicht spec-konform kommuniziert, werde ich FHEM-seitig ignorieren - da kommen keine spezial MySensors-Workarounds rein, das müsste dann auf der mqtt-gateway seite implementiert werden.
Ich schreib dann mal ein FHEM-modul für das serielle MySensors-Gateway, das Protoll ist ja simpel genug. Das Modul wird dann auch gleich mit dem Ethernet-gateway funktionieren.
Stay tuned.
- Norbert
Hallo Norbert,
ich bin ja schon froh, das der Stein ins Rollen gekommen ist. Ich finde die Technik prima, preiswert und einfach.
Das Gateway von mySensors läuft seit mehreren Tagen stabil. Ich kann natürlich jetzt nicht überblicken, was und wie unterstützt ist. Die Sensoren, die dort mit den diversen Sketchen gezeigt werden, funktioneren die meisten (ich hab nicht alle nachgebaut) auch mit fhem.
Wenn es natürlich noch eine einfachere Methode gibt, vielleicht ohne den Arduino Uno (bei mir), sondern direkt am Raspi, ist das natürlich noch besser. Und wenn dann auch noch an dem korrekten Ablauf des MQTT-Protokoll gearbeitet wird, hat man doch für fhem wieder einen zusätzlichen Kommunikationsstandard hinzubekommen.
Serielles / Lan MQTT-Mysensors - Gateway: Klasse, dann kann man sich aussuchen, wie und wo man das Gateway anschließen kann. Daumen hoch!
Für MySensors würde ich immer einen Arduino als Gateway einsetzen, unabhängig davon, ob der nun über USB (seriell) oder Ethernet angebunden ist. Einfach, weil diese Schnittstellen auf praktisch jedem System vorhanden sind (und weil der code für diese Gateways schon existiert). Man könnte zwar grundsätzlch so ein nRF24L01-modul auch direkt über SPI an einem Raspberry Pi anschließen - es ist aber nicht trivial darauf ein portables plattformunabhängiges FHEM-modul aufsetzen zu lassen (das dann auch auf anderen Rechnern läuft), da müsste man erst mal einen Abstraktionslayer für SPI (analog zu den I2C-modulen) dazwischenschieben.
Die Protokoll-implementierung des MQTT-moduls ist aus meiner Sicht vollständig, da kann man sich jetzt eigentlich nur noch Features (wie z.B. das Bridgen von Attribute-werten nach mqtt-topics) dazuwünschen. Für MySensors solltest Du halt darauf achten, dass das Attribut 'qos' auf '0' steht, sonst gibt das Modul den Speicher für ausgehende Messages (MySensors-aktoren) nicht wieder frei.
Gruß,
Norbert
Das meine ich ja.
Arduino.Gateway / über Lan / oder über USB.
Wenn der Benutzer entscheiden könnte, wie er es haben möchte, umso besser.
robin
Habe jetzt die Hardware bekommen und etwas damit rumgespielt.
Die Reichweite ist wirklich überraschend gut. Muss ich etwas genauer testen.
Das Protokoll ist schon recht gesprächig.
Zuerst will der Sensor eine eindeutige ID zugewiesen bekommen, dann ob er metrisch oder imperial messen soll. Wenn er das alles hat, dann kommen Sketch-Name, -Version, vorhandenen Sensoren und eben die Werte.
Ich habe auf die Schnelle aus dem Norberts Modul eine erste Testversion für den Serial-Sketch erstellt. Die grundsätzliche Kommunikation funktioniert, Meldungen werden empfangen und können auch gesendet werden. Ein neuer Sensor bekommt seine ID...
Jetzt fehlt eine Menge Fleißarbeit zum Auswerten von allem möglichen Message- und Sensor-Typen. Vieleicht poste ich morgen eine erste testbare Version...
2014.10.17 01:00:55.692 3: Parse message: 0;0;3;0;9;read: 1-1-0 s=255,c=0,t=17,pt=0,l=3:1.4
2014.10.17 01:00:55.694 3: MySensors: Gateway says: read: 1-1-0 s=255,c=0,t=17,pt=0,l=3:1.4
2014.10.17 01:00:55.696 3: Parse message: 1;255;0;0;17;1.4 <= Protokol 1.4
2014.10.17 01:00:55.699 3: MS_DEV: parse RAW message: MS 1;255;0;0;17;1.4 IODev: mysensors
2014.10.17 01:00:55.701 3: Parse message: 0;0;3;0;9;read: 1-1-0 s=255,c=3,t=6,pt=1,l=1:0
2014.10.17 01:00:55.704 3: MySensors: Gateway says: read: 1-1-0 s=255,c=3,t=6,pt=1,l=1:0
2014.10.17 01:00:55.705 3: Parse message: 1;255;3;0;6;0 <= Imperial oder Numeric?
2014.10.17 01:00:57.436 3: Parse message: 0;0;3;0;9;read: 1-1-0 s=255,c=3,t=11,pt=0,l=8:Humidity
2014.10.17 01:00:57.438 3: MySensors: Gateway says: read: 1-1-0 s=255,c=3,t=11,pt=0,l=8:Humidity
2014.10.17 01:00:57.440 3: Parse message: 1;255;3;0;11;Humidity <= Sketch: Humidity
2014.10.17 01:00:57.441 3: Parse message: 0;0;3;0;9;read: 1-1-0 s=255,c=3,t=12,pt=0,l=3:1.0
2014.10.17 01:00:57.443 3: MySensors: Gateway says: read: 1-1-0 s=255,c=3,t=12,pt=0,l=3:1.0
2014.10.17 01:00:57.444 3: Parse message: 1;255;3;0;12;1.0 <= Sketch Verion 1.0
2014.10.17 01:00:57.446 3: Parse message: 0;0;3;0;9;read: 1-1-0 s=0,c=0,t=7,pt=0,l=3:1.4
2014.10.17 01:00:57.447 3: MySensors: Gateway says: read: 1-1-0 s=0,c=0,t=7,pt=0,l=3:1.4
2014.10.17 01:00:57.449 3: Parse message: 1;0;0;0;7;1.4 <= Sensor 0 ist ein Humidity-Sensor
2014.10.17 01:00:57.451 3: MS_DEV: parse RAW message: MS 1;0;0;0;7;1.4 IODev: mysensors
2014.10.17 01:00:57.453 3: Parse message: 0;0;3;0;9;read: 1-1-0 s=1,c=0,t=6,pt=0,l=3:1.4
2014.10.17 01:00:57.454 3: MySensors: Gateway says: read: 1-1-0 s=1,c=0,t=6,pt=0,l=3:1.4
2014.10.17 01:00:57.636 3: Parse message: 1;1;0;0;6;1.4 <= Sensor 1 ist ein Temeratur-Sensor
2014.10.17 01:00:57.637 3: MS_DEV: parse RAW message: MS 1;1;0;0;6;1.4 IODev: mysensors
2014.10.17 01:00:58.681 3: Parse message: 0;0;3;0;9;read: 1-1-0 s=1,c=1,t=0,pt=7,l=5:24.0
2014.10.17 01:00:58.688 3: MySensors: Gateway says: read: 1-1-0 s=1,c=1,t=0,pt=7,l=5:24.0
2014.10.17 01:00:58.689 3: Parse message: 1;1;1;0;0;24.0 <= 24°C
2014.10.17 01:00:58.690 3: MS_DEV: parse RAW message: MS 1;1;1;0;0;24.0 IODev: mysensors
2014.10.17 01:00:58.691 3: Parse message: 0;0;3;0;9;read: 1-1-0 s=0,c=1,t=1,pt=7,l=5:38.0
2014.10.17 01:00:58.692 3: MySensors: Gateway says: read: 1-1-0 s=0,c=1,t=1,pt=7,l=5:38.0
2014.10.17 01:00:58.693 3: Parse message: 1;0;1;0;1;38.0 <= 38 % rH (der DHT11 ist der grösste Schrott)
2014.10.17 01:00:58.695 3: MS_DEV: parse RAW message: MS 1;0;1;0;1;38.0 IODev: mysensors
Hallo Alexander,
ich habe auch schon was geschrieben, aber in Ermangelung von Hardware noch nicht real testen können:
00_MYSENSORS (https://github.com/ntruchsess/fhem-mirror/raw/mysensors_unified/fhem/FHEM/00_MYSENSORS.pm)
10_MYSENSORS_DEVICE.pm (https://github.com/ntruchsess/fhem-mirror/raw/mysensors_unified/fhem/FHEM/10_MYSENSORS_DEVICE.pm)
lib/Device/Constants.pm (https://github.com/ntruchsess/fhem-mirror/raw/mysensors_unified/fhem/FHEM/lib/Device/MySensors/Constants.pm)
lib/Device/MySensors/Message.pm (https://github.com/ntruchsess/fhem-mirror/raw/mysensors_unified/fhem/FHEM/lib/Device/MySensors/Message.pm)
(oder einfach den mysensors_unified-branch (https://github.com/ntruchsess/fhem-mirror/tree/mysensors_unified) aus meinem fhem-mirror auschecken:
git clone https://github.com/ntruchsess/fhem-mirror.git
git checkout mysensors_unified
Da sind schon alle Konstanten für das Protokoll drin, S_GET und S_SET werden auf das (generische) Node-modul umgeleitet. Werte empfangen (S_SET-messages) setzen dynamisch benannte readings, autocreate neuer MYSENSORS_DEVICE-instanzen wenn Presentation-messages eingehen etc... Was noch fehlt ist die Behandlung der ganzen Internal-messages, das ist halt nur im Gateway-sourcecode dokumentiert und selbiges läuft ohne nRF24L01-modul (sollten die Tage mit der Post kommen) nur bis zur ersten Fehlermeldung 'check wires'...
Wäre prima, wenn wir die Aktivitäten bündeln könnten.
Gruß,
Norbert
EDIT 20.10.2014, 19:50 Uhr: Links und Text an den mysensors_unified-branch angepasst
so, die bestellten nRF24L01 sind vorhin gekommen, hab grade das SerialGateway und einen BinarySwitchSensor zusammengestöpselt.
das MYSENSORS-modul redet auch schon brav mit dem Gateway ;-) und versteht schon mal die wichtigsten internal-Messages, den Inclusion-mode kann man vom Modul an und abstellen. Allerdings kommt vom Sensor am Gateway nix an (der Sensor loggt nur immer 'req node id
send: 255-255-255-0 s=255,c=3,t=3,pt=0,l=0,st=fail:' auf seine Serielle Schnittstelle) :-(
(der code im Git ist aktualisiert, urls haben sich dadurch nicht geändert).
Gruß,
Norbert
Hallo Norbert,
der Sensor ist bestimmt in Ordnung, aber bevor er etwas sinnvolles sendet, will er erstmal eine eindeutige ID bekommen.
Das will er mit 'req node id' mitteilen. War bei mir allerdings etwas anders: 255,255,0,3,0 oder so. Das muss dann mit 255,255,0,4,<ID> beantwortet werden.
Das muss der Controller, also FHEM-Modul tun. Danach fragt er noch nach Metric/Imperial (muss aber nicht unbedingt beantwortet werden) und dann kommen Konfig-Daten (presentation etc.) und auch Werte.
Da der Controller sich die ID merkt (EEPROM) ist das beim Testen etwas blöd. Ich überlge schon, mir ein extra Sketch zu bauen, der genau das nicht macht.
Ich habe mir Deinen Code kurz angesehen. Da kann ich wohl noch einiges an Perl lernen. ;) Da Dein Code IMHO schöner ist, werde ich meine Module verwerfen. Ich würde aber gerne da mitarbeiten. Wo könnte ich Dich unterstützen?
Wenn ich beim kurzen Blick richtig verstanden habe, werden Readings wie Konstanten benannt
use constant variableTypes => qw{ V_TEMP V_HUM V_LIGHT V_DIMMER V_PRESSURE V_FORECAST V_RAIN
V_RAINRATE V_WIND V_GUST V_DIRECTION V_UV V_WEIGHT V_DISTANCE
V_IMPEDANCE V_ARMED V_TRIPPED V_WATT V_KWH V_SCENE_ON V_SCENE_OFF
V_HEATER V_HEATER_SW V_LIGHT_LEVEL V_VAR1 V_VAR2 V_VAR3 V_VAR4 V_VAR5
V_UP V_DOWN V_STOP V_IR_SEND V_IR_RECEIVE V_FLOW V_VOLUME V_LOCK_STATUS };
sub variableTypeToStr($) {
(variableTypes)[shift];
}
Finde ich nicht so glücklich. Wollen wir diese auf menschenlesbaren Namen wie 'temperature' mappen? Am besten mit einer Möglichkeit, per Attribut-Definition umzubenennen (für die Custom-Messages)?
Grüße,
Alexander
Architektur-Fragen:
Ich sehe das Modul MYSENSORS als eine Implementierung des Controllers, der alles delegiert und steuert. NODE ist für die Verarbeitung der Nachrichten von und zu einzelnen Nodes Zuständig. Wozu ist dann SENSOR? Sollen alle Readings in einzelnen Module aufgeteilt werden? Ich finde es besser, die Readings einer Node zusammen in einem Device zu fassen.
Die Verarbeitung der Internal-Messages läuft bei Dir im NODE. Wäre das nicht besser im MYSENSORS (also Controller) aufgehoben?
Nutzt Du den Dispatch-Mechanismus gar nicht und rufst einfach entsprechende Methode von den Device-Modulen weiter? Hat das einen bestimmten Zweck?
Möglicherweise sind das doofe Fragen ;) Ich hatte noch nicht die Zeit, den Code ganz genau zu lesen.
Grüße,
Alexander
Hab grade den sensor-sketch auf einen Nano geflasht, schon kommen die Nachrichten beim Gateway an... (War vorher auf einem Mega - irgendwie scheint MySensors wohl nicht mit der unterschiedlichen Pinbelegung des SPI-interfaces beim Mega klarzukommen).
Also:
Die Konstanten heißen so, wie in der MySensors-API weil ich 'Device::MySensors' gegebenenfalls als eigene Library (FHEM-unabhängig) veröffendlichen werde. Die sollen auch nicht zwingend zur Anzeige kommen, das ist eher für's logging, oder wenn man eben noch kein Mapping auf 'lesbare' Readings implementiert hat.
Die Trennung in Node und Sensor-modul mache ich, weil an einem Node auch mehrere gleichartige Sensoren dranhängen können. Das über die Reading-namen zu unterscheiden wie es div. GPIO-module tun halte ich für eher unglücklich, da muss man dann fast zwingend noch einen Readingsproxy dazu konfigurieren, wenn man etwas direkt aus dem GUI-heraus (á la 'on/off') schaltbar machen will.
Das Node-modul verwaltet dann die gemeinsame Config (und meldet z.B. den Batteriestand etc), die Sensor-module enthalten nur die Sensor-spezifischen Readings/Sets.
Das zentrale Mysensors-modul verarbeitet die Internal-messages, die vom Gateway kommen. Internal-messages der Nodes werden vom zentralen Modul an die Node-module weiterdeligiert.
Der Dispatch-mechanismus ist mir irgendwie zu ineffektiv für so eng gekoppelte Module. Da wird ja grundsätzlich alles serialisiert/deserialisiert, auch wenn die kommunizierenden Module in der gleichen FHEM-instanz laufen (was ja eher die Regel, als die Ausnahme ist). Das gehört mal grundlegend dahingehend überarbeitet, dass das serialisieren/deserialisieren transparent (und nur bei remote Aufrufen) erfolgt) und man richtige Objekte übergeben kann. Ist aber eine andere Baustelle.
Wie du unterstützen könntest? Schau einfach in den Code rein und mach Vorschläge, wo Du meinst was machen zu wollen oder zu können. Mach Dir einfach einen clone des fhem-mirrors auf Github und schick mir pull-requests gegen den 'mysensors'-branch.
Gruß,
Norbert
Verstehe, danke für die Erklärungen.
Ich würde zwar besser finden, wenn die Sensoren alle Readings beisamen haben, ansonsten explodiert die Zahl der 'Geräte', allein DHT-Sensoren liefern immer Feuchte und Temperatur gleichzeitig. aber gut...
Ich werde mir heute später alles genauer ansehen.
LG,
Alexander
so, I_ID_REQUEST/RESPONSE ist implementiert (https://github.com/ntruchsess/fhem-mirror/commit/4db23b70343dc2d13ea87aa3e84c30eb79736712?diff=unified#diff-0da889d02d76d530793a4d207ed29011R316).
Schon schick das Ganze - der BinarySwitchSensor schickt ja unmittelbar bei Zustandsänderung und im FHEM kommt es gefühlt verzögerungsfrei an :-)
Gruß,
Norbert
das Modul 'MYSENSORS_SENSOR' hat jetzt ein Attribut 'setCommands' mit dem man dynamisch Werte für 'set' definieren kann:
attr MY_LIGHT_47_11 setCommands on:V_LIGHT:0 off:V_LIGHT:1
damit kann man 'set MY_LIGHT_47_11 on' und 'set MY_LIGHT_47_11 off' aufrufen.
alternativ:
attr MY_LIGHT_47_11_set_V_LIGHT 0 1
erlaubt: 'set MY_LIGHT_47_11 V_LIGHT 0' bzw. 'set MY_LIGHT_47_11 V_LIGHT 1'
- Norbert
Hallo Alexander,
ich habe grade noch Default-attributewerte für per autocreate angelegte Devices (https://github.com/ntruchsess/fhem-mirror/commit/393566c911406435cd3ac52433122332a7e5b9e2#diff-0da889d02d76d530793a4d207ed29011R95) eingeführt.
Zitat von: hexenmeister am 17 Oktober 2014, 13:19:36Ich würde aber gerne da mitarbeiten. Wo könnte ich Dich unterstützen?
Eine große Hilfe wäre für die einzelnen Sensor-typen sinnvolle defaults zu ermitteln und da einzupflegen...
Hast Du eine Ahnung, welche Semantik beim Acknowledge-flag erwartet wird (das ignoriere ich bisher völlig)?
Und bei den Internal-messages gibt es auch noch einige weiße Flecken auf der Landkarte, bei denen ich nichts dokumentiertes drüber finde...
Was hat es eigentlich mit dem 'inclusion-mode' des Gateways auf sich? Ich hab das per 'set inclusion-mode on/off' schaltbar gemacht, aber was bewirkt das eigentlich? Ich hab im Verhalten des Gateways keinen Unterschied feststellen können...
soll ich das Gateway-reading 'log-message' für die Log-messages eigentlich drin lassen, oder reicht es da einfach mit Loglevel 4 ins Log zu schreiben?
Und zu guter letzt: soll ich die Module noch mal umbenennen? z.B. MYS_GW für das Gateway, MYS_NODE und MYS_DEVICE für die beiden anderen? Habt Ihr bessere Vorschläge?
Gruß,
Norbert
Hi Norbert,
Du warst ja schon richtig fleißig ;)
Ich habe jetzt etwas Zeit, will mir das alles ansehen. Mit den Default werde ich mir Gedanken mache, bei der Gelegenheit würde ich gerne noch den Readings 'richtige' namen geben. Am besten auch in Form von Default, Idealerweise per Attribut überschreibbar. Was hälst Du davon, gleich auch Maßeinheiten mit aufzunehmen? Ich würde sogar immer nur metrisches System lassen, oder kann jemand Imperial brauchen?
Ack habe ich mir noch nicht wirklich angesehen. Ich denke, man kann das frei handhaben, wird es angefordert, wird es beantwortet. Für Aktoren, denke ich, wäre Ack angebracht. Sensoren wollen auch ein haben. Scheint so, dass bis auch einige Service-Befehle ACK überall gewünscht wird.
Include war für mich auch ein Rätsel. Im Sketch habe ich (zugegeben auf die Schnelle) auch nichts sinnvollen gefunden. Ich denke, das ist ein Signal an Controller (also in unserem Fall FHEM), neue Sensoren zuzulassen. Man kann ja am Gateway per taster starten. Mach auch Sinn, da ansonsten bekommt ein 'jungfreulicher' Sensor beim ersten Test gleich eine ID, die man nicht ohne weiteres wieder ändern kann.
Bei Log-Messages habe ich gestern auch zunächst gedacht, dass da was sinnvolles zu loggen wäre. Dafür ist der Gateway aber zu gesprächig mit seinen Logs. Steht auch unwichtiges Zeug drinn. Ich würde die auf Level 5 loggen.
Ob man die Module umbenennen soll, bin ich mir auch nicht sicher, ich hatte gerstern meine MS_LINK und MS_DEV genannt. MYS klingt auch iwi nicht sonderlich gut. Ich würde so lassen, MYSENSORS, MYSENSORS_NODE und MYSENSORS_DEVICE klingen doch ganz gut.
Grüße,
Alexander
So, installiert und läuft erstmal.
Mein Perl ist pingeliger als deiner. Ich musste in 00_MYSENSORS Zeile 241 um 3. Parameter erweitern: DevIo_SimpleWrite($hash,"$txt\n", undef);
Nach dem ich autocreate eingeschaltet habe (dies könnte man durch den Inclusion-Taster automatisch tun) wurden zu meinem Humidity-Sensor 3 Devices erstellt:
MY_ARDUINO_NODE_1_255
MY_HUM_1_0
MY_TEMP_1_1
Nach meinem Geschmack etwas zu viel. Vor allem Arduino-Node ist eigentlich zu nichts zu gebrauchen. Sogar darin enthaltenes Attribut "coonfig" scheint nicht zu funktionieren. Dort steht zwar M, Temp.Sensor liefert jdoch 75. Wird Fahrenheit sein.
Ich bin da offen für Vorschläge, wo man die Funktionalität des Arduino_node (batterylevel, config, ggf. time) sinnvoll unterbringt. Das mit dem 'config'-attribut ist natürlich etwas dämlich, liegt dann aber wohl am Sketch. Wenn Du verbose auf 5 setzt, kannst Du sehen, ob die entsprechende I_CONFIG-message raus geht.
Ich hab noch mal nach dem Inclusion-mode geschaut. Der scheint im MyGateway.cpp wirklich nix anderes zu machen als den Blink-modus zu verändern, damit könnte man den Autocreate-modus anzeigen. Dumm nur, dass der Sketch das selbsttätig wieder zurücksetzt.
- Norbert
Lustigerweise hatte ich gestern mit meinen Modulen korrekte Temperatur anzeige. Dabei hatte ich die Config Message für Metric gar nicht implementiert. Ich muss mal in den Sketch gucken.
Ich finde es gar nicht so schlecht, dass IncludeModus automatisch zurückgesetzt wird. Es dürfte so gemeint sein: Man drückt auf di Taste und hat x-Minuten Zeit einen neuen Sensor anzumachen. Dieser wird registriert und Include-Modus beendet. Da dabei entsprechende Messagen an Controller rausgehen, können wir sauber darauf reagieren. Und autocreate-Attribut kann z.B. parallel dazu genutzt werden, diesen Modul daurhaft einzuschalten.
Was spricht dagegen, alle Readings und Steuerungen eines Hardware-Devices, wie bei meisten anderen Systemen auch nur in einer SoftwareModul-Instanz zusammenzufassen? Ich stelle mir nur eine Flut von FHEM-Devices, wenn ich in jedem Zimmer so ein Temp/Hum/Light-Sensor installiere ;)
wg. inclusion-mode: habe ich gerade mit 'autocreate'-attribut funktionell zusammengelegt (und ins git committed). Bei aktiviertem 'inclusion-mode' werden Devices automatisch angelegt, wenn Presentation-messages eintreffen. Ist autocreate gesetzt, wird 'inclusion-mode' im Gateway aktiv gehalten. Ist 'autocreate' nicht gesetzt, kann man den 'inclusion-mode' vom Gateway aus oder per set-commando aktivieren (setzt sich bei nicht gesetztem 'autocreate' nach 1 Minute von selber wieder zurück).
Wg. Zusammenlegen 'Node' und 'Device': dagegen spricht, dass man dann in einem Device viele, ggf. equivalente Readings hat. Also wenn man z.B. einen Sketch für eine Relays-karte macht kann man die Relays nicht mehr (ohne Readingsproxy) einfach auf der Weboberfläche ein-/aus-schalten. Die Readingproxies könnte man aber natürlich optional automatisch mit dazu anlegen (damit könnte ich mich auch anfreunden...)
Gruß,
Norbert
Mit Inclusion klingt sauber.
Den Einwand wg. Einzeldevices verstehe ich. Beide Wege bringen Nachteile mit sich. Ich denke noch darüber nach. Ein Argument wäre natürlich gleiches Verhalten mit den Anderen Geräten in FHEM...
Mit dem Metric/Imperial funktioniert nachweislich nicht. Wenn ich das in EEPROM wieder auf FF setze und das Überschreiben unterdrücke (das ist dann egal, ob im Sketch oder durch das Unterdrücken von Ausgehenden Message aus dem Modul), dann läufts korrekt. Wenn ein Message von Controller mit 'M' eintrifft, dann geht das System von Imperial aus. Message wird nicht wie gewünscht interpretiert. Das passiert weil Payload-Typ nicht als Byte erkannt wird. Die Methode getByte liefert dann 0 und isMetric = msg.getByte() == 'M' funktioniert natürlich nicht wie gewünscht. Ich versuche zu verstehen, wie PayloadType gesetzt wird.
Folgendes habe ich gefunden:
uint8_t command_ack_payload;
// 3 bit - Command type
// 1 bit - Request an ack - Indicator that receiver should send an ack back.
// 1 bit - Is ack messsage - Indicator that this is the actual ack message.
// 3 bit - Payload data type
und
typedef enum {
P_STRING, P_BYTE, P_INT16, P_UINT16, P_LONG32, P_ULONG32, P_CUSTOM, P_FLOAT32
} payload;
Ich glaube mittlerweile, dass Gateway ein Fehler hat. Scheinbar nimmt dieser immer Typ P_STRING an, wenn etwas as der Seriellen Schnittstelle kommt. Methode parseAndSend in MyGateway.cpp macht msg.set(value); und value ist als char *value=NULL; definiert. Dann wind eben MyMessage& MyMessage::set(const char* value) aus MyMessage.cpp aufgerufen und da wird PayloadType P_STRING gesetzt. Kannst Du vielleicht bei Gelegenheit auch mal drauf schauen? Wenn sich meine Vermutung bestätigt, melden wir das Problem an den MySynsors-Entwickler weiter.
Bis dahin funktionier Metric nur, wenn man I_CONFIG Message nicht beantwortet.
So, heute fallen mir schon die Augen zu... So viel Zeit mit dem blöden Metric/Imperial verbracht. >:(
Habe für Imperial/Metric-Problem eine (aus meiner Sicht einfache) Lösung implementiert und in MySensors-Forum vorgeschlagen: http://forum.mysensors.org/topic/334/issue-with-temperature-units/19
EDIT:
Es kam schon eine Antwort. Dieser Fehler ist bereits bekannt und korrigiert. Allerdings gibt es in seinem GitHub die Library an zwei Stellen. Eine aktuell, eine nicht. Ich habe natürlich die falsche genommen...
Habe jetzt Unterstützung zum Umbenennen der (technischen) Readings implementiert, angefangen Gedanken über die Default-Attribute zu machen und Constants upgedatet.
Leider kenne ich mich mit dem GIT nicht so gut aus. Habe auf die Schnelle kein pull request hinbekommen (TortoiseGit und ich haben uns wohl gegenseitig nicht verstanden) :(
Daher sind hier die Patches.
EDIT:
Git-Commando-Zeile lieferte folgendes:
The following changes since commit 4d2385910c1ed48b9ca2b823b0b58b574192dd07:
Merge branch 'mysensors' of https://github.com/ntruchsess/fhem-mirror into mysensors (2014-10-19 01:11:35 +0200)
are available in the git repository at:
https://github.com/hexenmeister/MyFHEM.git mysensors
for you to fetch changes up to 4d2385910c1ed48b9ca2b823b0b58b574192dd07:
Merge branch 'mysensors' of https://github.com/ntruchsess/fhem-mirror into mysensors (2014-10-19 01:11:35 +0200)
Kannst Du damit was anfangen?
danke für die Patches. Ich bin leider erst gerade eben dazu gekommen reinzuschauen (musste gestern und Heute was an meiner Baustelle machen, nächste Woche wäre die Nachttemperaturen wohl schon zu tief).
Das mit dem Pull-request geht so: Du musst das Repository auf Github selbst clonen und dann Deine Änderungen in Dein geclontes Repository pushen. Der Pull-request wird dann auf Github selbst erstellt und hat mit Deinem lokalen Repository nichts mehr zu tun.
Ich hab Deine Patches gerade mal händig eingespielt. Damit Du das mit dem Pull-request besser verstehst hab ich Deine Änderungen bei mir in den 'mysensors_alex'-branch gepusht und dazu einen Pull-request gegen den 'mysensors'-branch erstellt (https://github.com/ntruchsess/fhem-mirror/pull/15/files). Das schöne daran ist, dass man in dem Pull-request alle Differenzen sieht und jede Zeile kommentieren kann (sozusagen 'am lebenden Objekt...')
Das Attributgesteuerte Mappen der Readings könnte man eigentlich doch auch mit UserReadings machen? Dann bräuchte man gar keinen eigenen Code im Modul, es würden die passenden Default-Attribute reichen.
Gruß,
Norbert
Theoretisch habe ich des mit dem PullRequest (glaube ich) verstanden ;) Werde mir heute abend genauer ansehen.
Über UserReadings habe ich auch schon nachgedacht, bin aber zu der Meinung gekommen, dass das nicht das gleiche ist. Damit kann man die bestehenden Readings kopieren. Ich wollte diese jedoch ersetzen. Ich denke, das ist im Interesse der Benutzer, dass die Benennung mit anderen Modulen homogen ist. Nach Möglichkeit sollten sie auch menschenlesbar sein. Die derzeitigen Namen sind mir zu technisch, daher würde ich die am liebsten ganz ausblenden können, unter andern damit sie auch nicht im Log landen (klar, kann man verhindern, aber das ist wieder Zusatzaufwand). Da befand ich die Lösung mit dem 'Ummappen' für ein gangbaren Kompromis.
Grüße,
Alexander
Wenn die technischen Namen ganz verschwinden sollen, dann muss man das Mapping auch im Code festlegen, sonst taucht es im Attribut ja doch wieder auf ;-)
Bevor ich mich dessen annehme habe ich aber erst mal noch genug Arbeit damit MYSENSORS_NODE und MYSENSORS_SENSOR in ein einziges Device MYSENSORS_DEVICE zusammenzuführen.
Gruß,
Norbert
Zitat von: ntruchsess am 20 Oktober 2014, 12:36:03
sonst taucht es im Attribut ja doch wieder auf
... was für die Custom-Werte bei MySensors wohl der einzige Wert sein wird, einen sinvollen Namen zu vergeben...
für die Custom-variablen (V_VAR1 ff) hast Du natürlich recht, die kann man nicht hardcoded mappen. Muss ich mir noch mal genauer durch den Kopf gehen lassen, wie man das einerseits flexibel, andererseits nicht unnötig kompliziert bzw. mit unnötig vielen Attributen macht.
Ich hab jedenfalls erst mal MYSENSORS_NODE und MYSENSORS_SENSORS in MYSENSORS_DEVICE zusammengefasst (https://github.com/ntruchsess/fhem-mirror/commit/18f319840e4d37dc8345b0651f41fb1ce6e4019b). Funktioniert vom Grundsatz her schon mal, Ist aber nicht ganz so weit, wie die vorherige Lösung (das Autocreate beschränkt sich auf das Anlegen des Devices ohne weitere Konfiguration für die representierten Sensoren/Aktoren - die dafür vorgesehene Methode onPresentationMessage (https://github.com/ntruchsess/fhem-mirror/blob/mysensors_unified/fhem/FHEM/10_MYSENSORS_DEVICE.pm#L169) ist aktuell noch leer). Code im branch mysensors_unified (https://github.com/ntruchsess/fhem-mirror/tree/mysensors_unified/):
00_MYSENSORS.pm (https://github.com/ntruchsess/fhem-mirror/raw/mysensors_unified/fhem/FHEM/00_MYSENSORS.pm)
10_MYSENSORS_DEVICE.pm (https://github.com/ntruchsess/fhem-mirror/raw/mysensors_unified/fhem/FHEM/10_MYSENSORS_DEVICE.pm)
die anderen Dateien (lib/Device/MySensors/...) unverändert...
als Beispiel mal eine Konfiguration für den RelayWithButtonActuator.ino, die den Zustand bidirektional auf die STATE-werte 'on/off' abbildet (damit kann man den Aktuator sowohl aus der Weboberfläche heraus direkt schalten, als auch die sensorseitige Zustandsänderung (Schalten per Button am Arduino) direkt auf der Oberfläche visualisiert bekommen):
define gateway MYSENSORS /dev/ttyUSB0@115200
attr gateway stateFormat connection
define node MYSENSORS_DEVICE 245
attr node IODev gateway
attr node setCommands on:LIGHT_1:1 off:LIGHT_1:0
attr node stateFormat {ReadingsVal("node","LIGHT_1",0) ? "on" : "off"}
Das mit dem Mapping habe ich da noch nicht reingearbeitet, erst muss die Basis 'rund' laufen ;-)
Gruß,
Norbert
Handling von Acknowlege ist implementiert (https://github.com/ntruchsess/fhem-mirror/commit/8423ef24af8c384f0dc48eca1b224c7b11f0cb37). Das 'MYSENSORS'-device hat dafür das Attribut 'requestAck' bekommen.
Wenn dieses gesetzt ist, dann werden beim Ausführen von 'set XXX'-befehlen die Readings der MYSENSOR_DEVICE-nodes erst dann aktualisiert, wenn das zugehörige Acknowlege eintrifft. Ist das Attribut nicht gesetzt, geschieht dies sofort (schon beim Absenden der C_SET-message).
- Norbert
Die neue Version gefällt mir sehr gut. Ich musste zwei Kleinigkeiten ändern, damit sie bei mir problemlos läuft. Dafür habe ich Dir testweise ein Pull-Request geschickt (https://github.com/ntruchsess/fhem-mirror/pull/16). Ich denke, ich weiß jetzt wie es geht (sehr einfach :) ).
Zitatfür die Custom-variablen (V_VAR1 ff) hast Du natürlich recht, die kann man nicht hardcoded mappen. Muss ich mir noch mal genauer durch den Kopf gehen lassen, wie man das einerseits flexibel, andererseits nicht unnötig kompliziert bzw. mit unnötig vielen Attributen macht.
Wir können doch beides machen. MappingAttribute erlauben die Readings generell zu umbenennen, was für di Customs von User auch gemacht werden soll. Für die bekannten können wir intern die selbe Map füllen, die auch von den Map-Attributen gepflegt wird. Somit wird der Benutzen nicht mit vielen Atributen behelligt.
Grüße,
Alexander
Zitat von: hexenmeister am 20 Oktober 2014, 21:42:05sehr einfach :)
gell, kaum macht man's richtig, schon geht's -> Danke Dir. :-)
ja, das mit dem Mapping stelle ich mir auch so in der Art vor. Das mit dem Acknowledge braucht wohl noch intensieves Testen (der Retransmit-mechanismus ist noch recht rudimentär, da braucht es noch eine Logik, die die zeitlichen Abstände größer werden läßt und nach einem Timeout das Device auf 'not available' setzt).
Gruß,
Norbert
ZitatDas mit dem Acknowledge braucht wohl noch intensieves Testen
Das bezieht sich auf Aktors und für Sensoren nicht relevant, richtig? Müsste man mit einem Relay-Skatch testen können, indem man ihn für verschiedene kurze Zeiträume abschaltet?
EDIT: ich habe noch ein Transmitter-Board, kann mir morgen ein Relay-Aktor bauen, dann habe ich sowohl Sensor als auch ein Aktor zum Testen.
im Augenblick schickt das MYSENSORS-modul alle message mit gesetztem requestAck-flag. Um Re-transmits zu vermeiden muss man jetzt noch strukturiert ermitteln, welche Messages von der MySensors.cpp sowieso nicht acknowledged werden.
Gruß,
Norbert
Habe ein Vorschlag für die Implementierung von Readings-Remapping geschickt. Was mir da nicht gefällt, ist die ID-Nummer des Sensors. Habe aber erstmal drin gelassen, da ein Node anscheinend mehrere gleiche Sensoren haben kann. Muss man noch darüber nachdenken. Eine Möglichkeit wäre ein Readings 'temperatur' zu nennen, wenn es nur einen "TEMP"-Wert gesendet wird und Nummer verwenden, wenn es mehrere existieren.
Ich habe mich schon ein wenig in MySensors.cpp umgesehen. Morgen werde mal ich nach den Ack-Verhalten sehen.
ja, ein Node kann natürlich mehrere gleichartige Sensoren haben. Wenn man das dynamisch machen wollte (indem man nur den Typ des Readings mapped), hat man hier natürlich die Schwierigkeit, dass man das beim Auswerten der Attribute nicht wissen kann, welche und wie viele childIds der Sensor wirklich hat. (Das weis man eventuell beim Eintreffen der ersten C_SET-messages auch noch nicht - man kann die Presentation-messages nach meinem Verständnis ja nicht geziehlt abfragen - mein Versuch mit der I_REBOOT-message war wenig erfolgreich (ein Arduino mit Standard-bootloader geht da in einen nur durch Trennen von der Stromversorgung abbrechbaren Boot-loop). Bleibt eigentlich nur, als AttributeWert die childId explizit mit aufzunehmen. Dann läßt sich das bisherige Reading beim Anlegen oder Löschen des Mappings sauber aufräumen bzw. in das neue Reading überführen.
Die statischen Mappings müssten nach der Logik fast schon zwingend die childId übernehmen.
Also:
attr <node> map_TEMP_1 temperature
bzw.
attr <node> map_TEMP_1 temperature1
attr <node> map_TEMP_2 temperature2
automatisch gemappt wäre es immer:
TEMP_X -> temperatureX
Gruß,
Norbert
Zitatein Arduino mit Standard-bootloader
Bei MySensors scheint ein eigenes Bootloader zu geben, wenn ich richtig sehe, sogar mit OTA Möglichkeit. Habe mir aber noch nicht näher angesehen.
Deine Beschreibung fürs Mapping schein mir ein sauber gangbarer Weg zu sein.
ZitatDann läßt sich das bisherige Reading beim Anlegen oder Löschen des Mappings sauber aufräumen bzw. in das neue Reading überführen.
Danke nicht, dass das in der Praxis wirklich nötig ist, kaum jemand wird die Mapping-Attribute dynamisch ändern. Aber ist in jedem Fall konsequent und sehr sauber. Sollte also rein.
Viele Grüße,
Alexander
Was ich auch noch nicht eindeutig entschieden habe: Sollte man den Inhalt der Presentation-messages in Internals, Readings oder Attributen ablegen? Internals wären optisch 'am schönsten', damit die aber einen Neustart überleben müsste man die Logik allerdings weitestgehend selbst implementieren. Bei Readings und Attribute hätte man das quasi automatisch.
Define-parameter wie bei MYSENSORS_SENSOR bzw. MYSENSORS_NODE fallen wg. der möglichen 254 childIds ja eher aus.
Sinnvoll ist das, weil man sonst kaum erkennen kann, wenn die childIds der Sensoren mal versehendlich nicht mehr eindeutig sind.
Gruß,
Norbert
Zitat von: hexenmeister am 21 Oktober 2014, 00:05:35
kaum jemand wird die Mapping-Attribute dynamisch ändern.
Das sehe ich nicht so. Vieleicht nicht oft, aber mindestens dann, wenn man mit dem was Autocreate erzeugt nicht zufrieden ist.
pull-request gemerged und noch mal überarbeitet commit 1 (https://github.com/ntruchsess/fhem-mirror/commit/ad1474eac369f76437a3439f3b49282f9b4776b0), commit 2 (https://github.com/ntruchsess/fhem-mirror/commit/57c49a284c80fb4d11df1c9995ad27b1ae455e9f).
Kann jetzt Typ und Values mappen (die Value-mappings sind optional. Wird beim Mappen kein value-mapping gefunden, wird einfach der unveränderte Wert benutzt):
attr <node> mapReadingType LIGHT switch 0:off 1:on
(dieses Mapping für LIGHT ist schon genau so als default drin, das muss man tatsächlich nicht mehr extra angeben - mir fällt blos grade kein anderes Beispiel mit gemappten values ein)
Das Definitionsbeispiel für den RelayWithButtonActuator.ino verkürzt sich damit drastisch:
define gateway MYSENSORS /dev/ttyUSB0@115200
attr gateway stateFormat connection
define node MYSENSORS_DEVICE <nodeid>
attr node IODev gateway
attr node stateFormat switch_1
attr node setCommands on:LIGHT_1:1 off:LIGHT_1:0
setCommands und set_<type>_<childId> müssen noch dahingehend überarbeitet werden, dass sie die selben Mappings verwenden, damit man 'attr node setCommands on:switch_1:on off:switch_1:off' verwenden kann.
Gruß,
Norbert
setCommands und set_<type>_<childId> kommen jetzt auch mit per mapReadingType_<type> gemappten Readings klar (https://github.com/ntruchsess/fhem-mirror/commit/5ef8f70299415e09505b9c6bebfaa9d195062f7f):
define gateway MYSENSORS /dev/ttyUSB3@115200
attr gateway requestAck 1
attr gateway stateFormat connection
define node MYSENSORS_DEVICE <nodeid>
attr node IODev gateway
attr node stateFormat switch_1
#3 Varianten den switch zu schalten:
#entweder setCommand: (set node on/set node off)
attr node setCommands on:switch_1:on off:switch_1:off
#oder set_<reading> (set node switch_1 on/set node switch_1 off)
attr node set_switch_1 on,off
#oder set_<TYPE> (set LIGHT_1 0/set LIGHT_1 1)
attr node set_LIGHT_1 0,1
der Vollständigkeit halber noch mal die Links auf die Dateien
00_MYSENSORS (https://github.com/ntruchsess/fhem-mirror/raw/mysensors_unified/fhem/FHEM/00_MYSENSORS.pm)
10_MYSENSORS_DEVICE.pm (https://github.com/ntruchsess/fhem-mirror/raw/mysensors_unified/fhem/FHEM/10_MYSENSORS_DEVICE.pm)
lib/Device/MySensors/Constants.pm (https://github.com/ntruchsess/fhem-mirror/raw/mysensors_unified/fhem/FHEM/lib/Device/MySensors/Constants.pm)
lib/Device/MySensors/Message.pm (https://github.com/ntruchsess/fhem-mirror/raw/mysensors_unified/fhem/FHEM/lib/Device/MySensors/Message.pm)
(oder einfach den mysensors_unified-branch (https://github.com/ntruchsess/fhem-mirror/tree/mysensors_unified) aus meinem fhem-mirror auschecken:
git clone https://github.com/ntruchsess/fhem-mirror.git
git checkout mysensors_unified
Wenn Ihr meint, das Modul ist 'reif', dann checke ich es ins SVN ein.
Gruß,
Norbert
Hallo!
So, habe endlich Zeit, habe alles upgedatet, Relay-Node zusammengesteckt, bin am Testen...
Noch ohne autocreate: nach dem Einschalten der Node kommen folgende Meldungen:
2014.10.21 21:48:08.210 3: MYSENSORS: ignoring internal-msg from unknown radioId 127, childId 255 for I_SKETCH_VERSION
2014.10.21 21:48:08.255 3: MYSENSORS: ignoring presentation-msg from unknown radioId 127, childId 1, sensorType 3
Hat Node die ID 127 von dem FHEM bekommen? Oder hatte ich schon etwas im EEPROM? Also EPPROM an dieser Stelle gelöscht. Aber wieder ID 127.
Diese sollte vor der Aufnahme noch nicht vergeben werden. Das klingt nach einem Bug.
Jetzt Test für die Inclusion, ausgelöst durch Taster am Gateway.
Funktioniert, Device wird erstellt.
Ein Paar Warnungen im Log:
2014.10.21 22:09:03.714 1: PERL WARNING: Use of uninitialized value $fields[1] in join or string at FHEM/lib/Device/MySensors/Message.pm line 33.
2014.10.21 22:09:03.715 3: stacktrace:
2014.10.21 22:09:03.715 3: main::__ANON__ called by FHEM/lib/Device/MySensors/Message.pm (33)
2014.10.21 22:09:03.716 3: Device::MySensors::Message::createMsg called by ./FHEM/00_MYSENSORS.pm (369)
2014.10.21 22:09:03.716 3: MYSENSORS::sendMessage called by ./FHEM/10_MYSENSORS_DEVICE.pm (302)
2014.10.21 22:09:03.717 3: MYSENSORS::DEVICE::sendClientMessage called by ./FHEM/10_MYSENSORS_DEVICE.pm (263)
2014.10.21 22:09:03.718 3: MYSENSORS::DEVICE::onInternalMessage called by ./FHEM/00_MYSENSORS.pm (315)
2014.10.21 22:09:03.723 3: MYSENSORS::onInternalMsg called by ./FHEM/00_MYSENSORS.pm (261)
2014.10.21 22:09:03.724 3: MYSENSORS::Read called by fhem.pl (2923)
2014.10.21 22:09:03.724 3: main::CallFn called by fhem.pl (598)
2014.10.21 22:09:03.725 1: PERL WARNING: Use of uninitialized value in sprintf at FHEM/lib/Device/MySensors/Message.pm line 40.
2014.10.21 22:09:03.725 3: stacktrace:
2014.10.21 22:09:03.726 3: main::__ANON__ called by FHEM/lib/Device/MySensors/Message.pm (40)
2014.10.21 22:09:03.726 3: Device::MySensors::Message::dumpMsg called by ./FHEM/00_MYSENSORS.pm (370)
2014.10.21 22:09:03.727 3: MYSENSORS::sendMessage called by ./FHEM/10_MYSENSORS_DEVICE.pm (302)
2014.10.21 22:09:03.727 3: MYSENSORS::DEVICE::sendClientMessage called by ./FHEM/10_MYSENSORS_DEVICE.pm (263)
2014.10.21 22:09:03.728 3: MYSENSORS::DEVICE::onInternalMessage called by ./FHEM/00_MYSENSORS.pm (315)
2014.10.21 22:09:03.729 3: MYSENSORS::onInternalMsg called by ./FHEM/00_MYSENSORS.pm (261)
2014.10.21 22:09:03.729 3: MYSENSORS::Read called by fhem.pl (2923)
2014.10.21 22:09:03.730 3: main::CallFn called by fhem.pl (598)
mit dem gesetzten autocreate funktioniert genauso.
Schalten:
attr MYSENSOR_127 setCommands on:switch_1:on off:switch_1:off
funktioniert, Relay schaltet "falsch rum" (mein Relay-Modul schaltet bei low). Also umdrehen:
attr MYSENSOR_127 setCommands on:switch_1:off off:switch_1:on
Funktioniert richtig. Evtl. wäre sollte bei dieser Änderung, der Schaltbefehl entsprechend dem nuen Zustand gesendet werden? Oder doch besser nicht? Ich neige dazu, das eher nicht zu machen...
attr MYSENSOR_127 set_switch_1 on,off
wieder falsch rum, hier kann man aber wohl nichts 'umdrehen'?
attr MYSENSOR_127 set_LIGHT_1 0,1
erwartungsgemäß 'andersrum'. Auch hier wäre die Option zum 'Umdrehen' hilfreich.
Mein DHT11 Sensor-Node funktioniert auch weiterhin.
Anscheinend sendet der Sketch die Werte nur, wenn sie sich ändern, ansonsten kann ich die unregelmäßige und nicht gleichzitige AKtualisierungen von TEMP und HUM nicht erklären.
requestAck im DEVICE gesetzt: wenn ich die Relay-Node ausmache, on-Befehl sende und wieder die Node einschalte, dann bleibt sie nach der Initialisierung ausgeschaltet.
requestAck im Gateway gesetzt: jetzt bekommt Relay-Node nach dem Einschalten immer den gewünschten Zustand, egal wann geschaltet wurde: vor oder nach dem Auschalten. Mega cool ;)
(übrigens, hier ist es inkonsequent: Bei Device gilt yes/no, beim Gateway wird 1 erwartet.)
Dennoch ein Problem mit dieser Option. Danach wird der Log kontinuierlich zugemüllt:
2014.10.21 22:48:00.831 3: stacktrace:
2014.10.21 22:48:00.832 3: main::__ANON__ called by ./FHEM/10_MYSENSORS_DEVICE.pm (308)
2014.10.21 22:48:00.833 3: MYSENSORS::DEVICE::mapReading called by ./FHEM/10_MYSENSORS_DEVICE.pm (215)
2014.10.21 22:48:00.834 3: MYSENSORS::DEVICE::onSetMessage called by ./FHEM/00_MYSENSORS.pm (295)
2014.10.21 22:48:00.835 3: MYSENSORS::onSetMsg called by ./FHEM/00_MYSENSORS.pm (253)
2014.10.21 22:48:00.836 3: MYSENSORS::Read called by fhem.pl (2923)
2014.10.21 22:48:00.837 3: main::CallFn called by fhem.pl (598)
2014.10.21 22:48:01.842 1: PERL WARNING: Use of uninitialized value $value in hash element at ./FHEM/10_MYSENSORS_DEVICE.pm line 309.
2014.10.21 22:48:01.843 3: stacktrace:
2014.10.21 22:48:01.844 3: main::__ANON__ called by ./FHEM/10_MYSENSORS_DEVICE.pm (308)
2014.10.21 22:48:01.846 3: MYSENSORS::DEVICE::mapReading called by ./FHEM/10_MYSENSORS_DEVICE.pm (215)
2014.10.21 22:48:01.847 3: MYSENSORS::DEVICE::onSetMessage called by ./FHEM/00_MYSENSORS.pm (295)
2014.10.21 22:48:01.847 3: MYSENSORS::onSetMsg called by ./FHEM/00_MYSENSORS.pm (253)
2014.10.21 22:48:01.849 3: MYSENSORS::Read called by fhem.pl (2923)
2014.10.21 22:48:01.849 3: main::CallFn called by fhem.pl (598)
Auschalten von Relay-Node stoppt den Spuk. Löschen von requestAck im Gateway auch.
Liegt hier eine ACK-Schleife vor?
Nach dem wieder setzen setzt von requestAck setzt die Schleife erst wenn Hardware aus und wieder angemacht wird.
Kann ich noch etwas gezielt testen?
Bis dahin werde ich mir erstmal den Code anzuschauen.
Grüße,
Alexander
Bis auf meine Anmerkungen funktioniert bei mir alles sehr stabil und vorhersagbar. Die Schaltbefehle kommen gefühlt verzögerungsfrei.
Sehr gute Arbeit!
Ich denke, ich werde nach und nach andere Gerätschaften von der MySensors-Seite nachbauen und ein oder anderes auch produktiv einsetzen.
Was ich jedoch noch überlege: Ich würde ggf. in meinem haus mehrere (min zwei) Gateways einsetzen müssen. Repeater-Nodes will ich eher vermeiden. Die Frage ist, ob das alles dann noch korrekt funktioniert. Ich vermute, es kann Probleme geben mit der Erkennung von doppelten (durch mehrere Gateways empfangenen) Messages. Eine Message-Nummer oder ID gibt es ja nicht.
Grüße,
Alexander
2. Gateway sollte nicht nötig sein, die Sensoren können ja im Repeater-mode arbeiten. Dazu muss im Setup des Sketches der MySensor::begin-methode der optionale Parameter repeaterMode (Default false) mit true übergeben werden. So ein Repeater-sensor kann dann natürlich nicht sinnvoll mit Batterie laufen. Habe ich aber noch nicht getestet, ich hab erst mal nur 2 nRF24L01 gekauft, da hätte ich besser gleich richtig zulangen sollen.
Die Herrusforderung mit Repeatern ist aber das gleiche, weil deren Messages ja genauso vom Gateway empfangen werden.
Ansonsten könnte man aber auch mehrere Gateways auf unterschiedlichen Kanälen (siehe MyConfig.h) laufen lassen.
Das es RepeaterModus gibt, wusste ich schon, finde aber mehrere Gateways sauberer, denn weniger Latenz und Funk-Last.
Mehrere Kanäle würden ja bedeuten, dass ich mich bei den Sensoren selbst entscheiden soll, mit welchem Gateway sie empfangen werden können. Da würde ich etwas automatisches wünschen, wie bei HomeMatic z.B.
Zitatich hab erst mal nur 2 nRF24L01 gekauft, da hätte ich besser gleich richtig zulangen sollen.
Mir gefällt das System doch besser, als erwartet. Ich werden noch 10 Stück bestellen. :)
Zitat von: hexenmeister am 22 Oktober 2014, 08:42:57
Das es RepeaterModus gibt, wusste ich schon, finde aber mehrere Gateways sauberer, denn weniger Latenz und Funk-Last.
Mehrere Kanäle würden ja bedeuten, dass ich mich bei den Sensoren selbst entscheiden soll, mit welchem Gateway sie empfangen werden können. Da würde ich etwas automatisches wünschen, wie bei HomeMatic z.B.
Mir gefällt das System doch besser, als erwartet. Ich werden noch 10 Stück bestellen. :)
Ach nee :-), hat sich die Anfrage für die Programmierung eines Moduls doch gelohnt. :-)
Wie sieht es denn mit den Störungen im WLAN aus? Hast du etwas davon bemerkt?
Ich zumindest habe keine.
Wann wird es denn eingecheckt?
robin
Aktuell kann man den Sende-/Empfangskanal nur in der MyConfig.h fest einstellen. Natürlich könnte man eine Automatik implementieren, die kostet aber auch wieder Speicher. Kannst Dich ja mal ranmachen, sollte aber optional per #define in der MyConfig.h zu aktivieren sein.
- Ignorieren von ID-Requests wenn inclusion-mode bzw. autocreate nicht aktiv sind ist erledigt.
- requestAck optional am Device auch. Ist 'additiv' - wenn es am Gateway gesetzt ist, gilt es für alle Nodes unabhängig davon, ob es am Node selbst auch aktiviert ist. (Um Missverständnisse auszuschließen kann man das Attribut jetzt nur noch auf 1 setzen oder löschen).
- das 'set_XXX'-attribut habe ich in 'setReading_XXX' umbenannt. Finde ich eindeutiger.
- die on/off - Semantik kannst Du per 'attr xxx mapReadingType_LIGHT switch 0:on 1:off' pro Node umdrehen.
@Robin: Mach dich ans Testen und gib Feedback, ob es architekturell bzw. von der Semantik der Attibute her passt, dann checke ich es ein (Bugs kann man immer noch fixen).
Gruß,
Norbert
@Robin
Ich muss gestehen, Störungen gab es keine (die ich merken konnte). Die Qualität des (Billig)Moduls hat mich schon überrascht. Da die Reichweite (für mich auch eher unerwaret) ganz gut ist, werde ich mein GesamtSystem weiter mit diesen Teile erweitern (versuchen), da sie doch etwas billiger sind als meine FRM12b-Teile und es bereits eine brauchbare Firmware existiert.
Die "Multi-Gateway-Fähigkeit" fehlt mir jedoch noch (Stichwort: Ausfallsicherheit und Reichweite), da reichen mir die Repeater Nodes nicht. Ich möchte auch, dass alle Sensoren mit allen Gateways empfangen werden können.
@Norbert: Was hälst Du von der Idee, dass die Nachrichten ignoriert werden, wenn vor max. X Sekunden (eine ?) eine identische Nachricht verarbeitet wurde? Damit könnte man ja die Duplikate sicher erkennen, Nachteile sehe ich auch keine.
Weiterhin wäre wohl sinnvoll, eine PCB entwickeln und fertigen lassen, wo alles einfach drauf gelötet werden kann (wenn man genug davon bestellt, kostet das etwa 1 Euro pro Stück), diese Fummelei mit den Kabelpeitchen nervt...
Klasse, dass die gestern gefundenen Probleme schon gefixt sind, danke! Ich werde heute Abend wieder testen. Wenn nichts mehr ist und die Doku verständlich ist, kann man IMHO auch einchecken. Wir brauchen aber schon nach Möglichkeit 1-2 weitere Tester mit anderen Konfigurationen, Vorstellungen und Einsatzszenarien.
Grüße,
Alexander
In Bezug auf Reichweitenerhöhung durch Einsatz mehrerer günstig platzierter Gateways sehe ich da keine Probleme. Die Sensoren müssten einfach dem räumlich näher liegenden Gateway per IODev zugeordnet werden. Das Gateway ignoriert Nachrichten, für die es keinen per IODev zugeordneten client findet. Der Autocreate-mechanismus müsste noch das IODev-attribut direkt zuweisen, damit die neu angelegte MYSENSORS_DEVICE-instanz nicht beim anderen Gateway landet.
Der ID_Request ist etwas problematisch, weil jede MYSENSORS-modul instanz davon ausgeht die IDs frei vergeben zu können. Das wäre mit einem Attribut 'last-sensorid' in den Griff zu kriegen, dann könnte man jedem Gateway einfach einen ID-range zur Vergabe zuweisen.
Die Sensoren müsste man natürlich geziehlt anlernen (den inclusion-mode also immer nur bei einem Gateway anschalten).
Lästig ist, dass die Sensoren kein Löschen der gesetzten ID per Knopfdruck (analog zum inclusion-mode-button am Gateway) vorsehen. Hat ein Sensor erst mal eine ID, die nicht im Range des gewünschten Gateways liegt, dann kann der Sensor zwar per IODev diesem Gateway zugeordnet werden, man muss aber beim Anlernen weiterer Sensoren damit rechnen ID-Dubletten zu erzeugen.
Wenn es aber um Redundanz geht ist das eine größere Baustelle. Dafür müsste man den IODev-mechanismus multivalue-tauglich machen, da entwickel ich hier keine Sonderlocke. Ist für mich daher erst mal out-of-scope.
Diskussionen bzw. schon fertige Layouts universell nutzbarer PCBs findest Du im MySensors Hardware Forum.
Ich habe gerade mal die vier Dateien ausgewechselt.
root@raspbmc:/opt/fhem# Undefined subroutine &MYSENSORS::DEVICE::onGatewayStarted called at ./FHEM/00_MYSENSORS.pm line 331.
was fehlt?
robin
falsche Datei? Weil da (https://github.com/ntruchsess/fhem-mirror/blob/mysensors_unified/fhem/FHEM/10_MYSENSORS_DEVICE.pm#L214) isses drin...
jau, alte Dateien.
aber der Temperatursensor verbindet sich nicht
define mytemp MYSENSORS_DEVICE TEMP 21 0
hat sich da in der Definition irgendwas geändert?
gateway sagt folgendes:
connection
startup complete
2014-10-22 19:51:31
arduino serial log sagt folgendes:
sensor started, id 21
send: 21-21-0-0 s=255,c=0,t=17,pt=0,l=3,st=ok:1.4
send: 21-21-0-0 s=255,c=3,t=6,pt=1,l=1,st=ok:0
send: 21-21-0-0 s=255,c=3,t=11,pt=0,l=18,st=ok:Temperature Sensor
send: 21-21-0-0 s=255,c=3,t=12,pt=0,l=3,st=ok:1.0
send: 21-21-0-0 s=0,c=0,t=6,pt=0,l=3,st=ok:1.4
send: 21-21-0-0 s=0,c=1,t=0,pt=7,l=5,st=ok:23.1
Update:
Aber natürlich hat sich was geändert.
sieht jetzt bei mir so aus:
define jeelinktemp MYSENSORS /dev/ttyUSB0@115200
attr jeelinktemp room mysensors
attr jeelinktemp stateFormat connection
define temperatursensor MYSENSORS_DEVICE 21
attr temperatursensor IODev jeelinktemp
attr temperatursensor room mysensors
bei 3 18B20 Temperatursensoren kommt sogar ein Ergebnis raus.
temperature_0
25.4
2014-10-22 20:21:24
temperature_1
26.1
2014-10-22 20:21:24
temperature_2
25.9
2014-10-22 20:21:24
Nur wie kommt man an die Channel ID, wenn man nicht gerade den Sensor an den Serial-Monitor anschließen möchte?
Antwort:
Inclusion Mode beim Gateway einschalten. Damit "horcht" das Gateway für eine kurze Zeit in seinem Netzwerk herum, ob es einen neuen Sensor gibt. Dann den neuen hinzuzufügenden Sensor einmal resetten und schon nimmt das Gateway (bzw. Fhem) den Sensor in seiner Liste auf.
Anschließend wird dann sowas erzeugt:
CFGFN
DEF
20
IODev
jeelinktemp
I_SKETCH_NAME
Soil Moisture Sensor
I_SKETCH_VERSION
1.0
NAME
MYSENSOR_20
NR
1321
STATE
???
TYPE
MYSENSORS_DEVICE
ack
0
radioId
20
Readings
V_TRIPPED_0
0
2014-10-22 20:35:11
Sogar mit der Sketch-Version und Sensor-Typ vom Sensor-Sketch, prima!
Zitat von: fh168
das gateway verliert die connection.. wenn ich wieder auf connect draufklicke dann gehts wieder für eine gewisse zeit.
liegt vermutlich am Gateway selber. Wenn Du 'set <gateway> connect' aufrufst, wird die Serielle Schnittstelle geschlossen und wieder geöffnet. Das setzt den Arduino per Hardwarereset (DTR der Schnittstelle ist mit Reset verbunden) zurück. Gibt's was verwertbares aus dem Log? Ggf. mit verbose = 5 am Gateway noch mal laufen lassen. Ist 'requestAck' am Gateway-device aktiviert?
Gruß,
Norbert
Zitat von: ntruchsess am 22 Oktober 2014, 22:09:32
liegt vermutlich am Gateway selber.
Vermute ich auch. Mein GateWay läuft seit Tagen ohne Reset und Probleme. Und das obwohl es einfach wild auf dem Breadboard zusammengesteckt ist.
Zitat von: hexenmeister am 22 Oktober 2014, 22:13:03Mein GateWay läuft seit Tagen ohne Reset und Probleme.
Das nehme ich jetzt mal zum Anlass die Module in's SVN einzuchecken (http://sourceforge.net/p/fhem/code/6800/). Ab jetzt werden die Bugs auch immer gleich dort gefixed. Patches am liebsten bitte per pull-request gegen master in meinem fhem-mirror auf github. (https://github.com/ntruchsess/fhem-mirror)
Gruß,
Norbert
Habe ein Bischen die neue Version getestet....
Ohne Inclusion keine ID-Vergabe -> fix bestätigt
Wieso wird eigentlich ID 127 vergeben?
Default soll doch 20 sein (laut Doku). Ich hab kein Attribut definiert.
On/Off 'undrehen' -> funktioniert
(attr MYSENSOR_127 mapReadingType_LIGHT switch 0:on 1:off)
requeatAck funktioniert jetzt ohne Warnings-Schleife.
Warnins (z.B. beim beim Reset von RelayNode) kommen immer noch:
2014.10.22 22:17:55.053 1: PERL WARNING: Use of uninitialized value $fields[1] in join or string at FHEM/lib/Device/MySensors/Message.pm line 33.
2014.10.22 22:17:55.053 3: stacktrace:
2014.10.22 22:17:55.054 3: main::__ANON__ called by FHEM/lib/Device/MySensors/Message.pm (33)
2014.10.22 22:17:55.055 3: Device::MySensors::Message::createMsg called by ./FHEM/00_MYSENSORS.pm (373)
2014.10.22 22:17:55.055 3: MYSENSORS::sendMessage called by ./FHEM/10_MYSENSORS_DEVICE.pm (316)
2014.10.22 22:17:55.055 3: MYSENSORS::DEVICE::sendClientMessage called by ./FHEM/10_MYSENSORS_DEVICE.pm (276)
2014.10.22 22:17:55.056 3: MYSENSORS::DEVICE::onInternalMessage called by ./FHEM/00_MYSENSORS.pm (315)
2014.10.22 22:17:55.056 3: MYSENSORS::onInternalMsg called by ./FHEM/00_MYSENSORS.pm (261)
2014.10.22 22:17:55.057 3: MYSENSORS::Read called by fhem.pl (2923)
2014.10.22 22:17:55.057 3: main::CallFn called by fhem.pl (598)
2014.10.22 22:17:55.061 1: PERL WARNING: Use of uninitialized value in sprintf at FHEM/lib/Device/MySensors/Message.pm line 40.
2014.10.22 22:17:55.061 3: stacktrace:
2014.10.22 22:17:55.063 3: main::__ANON__ called by FHEM/lib/Device/MySensors/Message.pm (40)
2014.10.22 22:17:55.063 3: Device::MySensors::Message::dumpMsg called by ./FHEM/00_MYSENSORS.pm (374)
2014.10.22 22:17:55.064 3: MYSENSORS::sendMessage called by ./FHEM/10_MYSENSORS_DEVICE.pm (316)
2014.10.22 22:17:55.064 3: MYSENSORS::DEVICE::sendClientMessage called by ./FHEM/10_MYSENSORS_DEVICE.pm (276)
2014.10.22 22:17:55.065 3: MYSENSORS::DEVICE::onInternalMessage called by ./FHEM/00_MYSENSORS.pm (315)
2014.10.22 22:17:55.066 3: MYSENSORS::onInternalMsg called by ./FHEM/00_MYSENSORS.pm (261)
2014.10.22 22:17:55.066 3: MYSENSORS::Read called by fhem.pl (2923)
2014.10.22 22:17:55.067 3: main::CallFn called by fhem.pl (598)
2014.10.22 22:18:00.028 3: a_automation_heartbeat: ctrl_last_RL_WZ_Light
Zitatattr <name> mapReadingType_<reading> <new reading name> [<value>:<mappedvalue>]*
configures reading user names that should be used instead of technical names
Ich fürchte, hier wird leider kein Benutzer verstehen, was die technischen Namen sind und wie sie genau heißen. Evtl. wäre besser zu ermöglichen, die sichtbaren (also eingentlich bereits gemappten) Namen anzupassen.
Irgendwie ist das noch schwer durchzublicken...
verwirrend, dass
attr MYSENSOR_127 setReading_switch_1 on,off
geht, aber nicht
attr MYSENSOR_127 setReading_switch on,off
Insgesamt läuft Modul gut. :)
EDIT: Bildchen ;)
sub mapReading($$) {
my($hash, $type, $childId, $value) = @_;
Da fehlen noch zwei $$. Mein Perl mag es nicht so ;)
Danke noch mal für die Warnings, diesmal passen die Zeilennummern auch zum code ;-)
Zitat von: hexenmeister am 22 Oktober 2014, 23:13:13
Wieso wird eigentlich ID 127 vergeben?
Default soll doch 20 sein (laut Doku). Ich hab kein Attribut definiert.
Das ist so, weil 'keys' in perl kein sortiertes Array zurückgibt ;-) (ok, könnte man einfach ändern)
20 ist nur der Vorgabewert für die kleinste mögliche ID. Das Gateway zählt nicht einfach hoch, sondern prüft, welche IDs die registrierten Nodes schon haben.
Zitat von: hexenmeister am 22 Oktober 2014, 23:13:13
configures reading user names that should be used instead of technical names
Ich fürchte, hier wird leider kein Benutzer verstehen, was die technischen Namen sind und wie sie genau heißen.
ich gebe zu, das verstehe ich losgelöst vom Kontext auch nicht ;-) Irgendwie ist der Satz bei copy&paste zerwürfelt worden. 'technical names' ist eh überholt. Schreib was, was auch ein DAU versteht - ich bin da etwas 'betriebsblind'
Zitat von: hexenmeister am 22 Oktober 2014, 23:13:13
verwirrend, dass
attr MYSENSOR_127 setReading_switch_1 on,off
geht, aber nicht
attr MYSENSOR_127 setReading_switch on,off
das Reading heißt ja 'switch_1' und nicht 'switch'. Das könnte man nur besser machen, wenn man Mappings für alle bekannten Sketches hinterlegt (aber man kann sich nicht darauf verlassen, dass nicht jemand den Sketch verändert ohne den Namen zu ändern). Oder hast Du einen schlauen Vorschlag, wie man die childIds aus den Readings weglassen kann ohne Konflikte zu bekommen, wenn doch plötzlich ein Wert zu einem schon von einer anderen childId benutzen Variablentyp kommt (Und das ganze reproduzierbar und unabhängig von der Reihenfolge in der die Werte eintreffen).
Zitat von: hexenmeister am 22 Oktober 2014, 23:13:13
Insgesamt läuft Modul gut. :)
danke für die Blumen :-)
- Norbert
hab die Warnings mal nach bestem Wissen und Gewissen behoben... (http://sourceforge.net/p/fhem/code/6801/)
... und gleich mal mit einem EthernetGateway getestet.
define gateway 192.168.0.6:5003
tut (fast) wie es soll. Schickt nur keine 'I_STARTUP_COMPLETE'-message - das hat aber (abgesehen vom sichtbaren STATE) aktuell keine weiteren Auswirkungen.
Gruß,
Norbert
Ethernet gateway läuft ....
Bastelstunde 8)
Es ist schon fast langweilig. Man steckt es zusammen, schaltet ein und... es funktioniert. Da ich keinen freien Transmitter mehr habe, habe ich beschlossen, meinen Humidity-Sensor zu erweitern. Kurzerhand zwei Sketches gemerged und... DEVICE hat ein neues Reading. Da zahlt sich die universale Aufbau aus.
Anregungen/Wünsche/Kommentare ;)
Warnings sind gefühlt weniger geworden. Bei Reset des Nodes kommen aber noch:
2014.10.23 23:04:51.245 1: PERL WARNING: Use of uninitialized value $fields[1] in join or string at FHEM/lib/Device/MySensors/Message.pm line 33.
2014.10.23 23:04:51.246 3: stacktrace:
2014.10.23 23:04:51.246 3: main::__ANON__ called by FHEM/lib/Device/MySensors/Message.pm (33)
2014.10.23 23:04:51.247 3: Device::MySensors::Message::createMsg called by ./FHEM/00_MYSENSORS.pm (373)
2014.10.23 23:04:51.247 3: MYSENSORS::sendMessage called by ./FHEM/10_MYSENSORS_DEVICE.pm (316)
2014.10.23 23:04:51.248 3: MYSENSORS::DEVICE::sendClientMessage called by ./FHEM/10_MYSENSORS_DEVICE.pm (276)
2014.10.23 23:04:51.249 3: MYSENSORS::DEVICE::onInternalMessage called by ./FHEM/00_MYSENSORS.pm (315)
2014.10.23 23:04:51.249 3: MYSENSORS::onInternalMsg called by ./FHEM/00_MYSENSORS.pm (261)
2014.10.23 23:04:51.250 3: MYSENSORS::Read called by fhem.pl (2923)
2014.10.23 23:04:51.250 3: main::CallFn called by fhem.pl (598)
2014.10.23 23:04:51.251 1: PERL WARNING: Use of uninitialized value in sprintf at FHEM/lib/Device/MySensors/Message.pm line 40.
2014.10.23 23:04:51.251 3: stacktrace:
2014.10.23 23:04:51.252 3: main::__ANON__ called by FHEM/lib/Device/MySensors/Message.pm (40)
2014.10.23 23:04:51.252 3: Device::MySensors::Message::dumpMsg called by ./FHEM/00_MYSENSORS.pm (374)
2014.10.23 23:04:51.253 3: MYSENSORS::sendMessage called by ./FHEM/10_MYSENSORS_DEVICE.pm (316)
2014.10.23 23:04:51.253 3: MYSENSORS::DEVICE::sendClientMessage called by ./FHEM/10_MYSENSORS_DEVICE.pm (276)
2014.10.23 23:04:51.254 3: MYSENSORS::DEVICE::onInternalMessage called by ./FHEM/00_MYSENSORS.pm (315)
2014.10.23 23:04:51.255 3: MYSENSORS::onInternalMsg called by ./FHEM/00_MYSENSORS.pm (261)
2014.10.23 23:04:51.255 3: MYSENSORS::Read called by fhem.pl (2923)
2014.10.23 23:04:51.256 3: main::CallFn called by fhem.pl (598)
Es wäre schön, wenn nach dem Remappen die alten Readings gelöscht werden:
attr node mapReadingType_DISTANCE distance
die alte V_DISTANCE_2 soll weg.
Man könnte distance auch analog temperatur und humidity fest integrieren.
Es wäre hilfreich, wenn man die ID-Vergabe etwas beeinflüssen könnte.
Mir schwebt folgendes vor:
- Min/Max ID per Attribut definieren (damit man mehrere unanhängige Ranges für mehrere IOs definieren kann.)
- einmalig die nächste zu vergebende ID bestimmen: Damit wäre möglich, einem Sensor eine bestimmte ID zu verpassen (die er beim Drücken des Inclusion Knopfes dann auch sicher bekommt). Ich denke hier an ein set-Befehl und eine Anzeige in Internals (oder Readings bzw. Attribute?)
ZitatSchreib was, was auch ein DAU versteht
Ich denke, hier ist das Problem nicht die Formulierung, sondern die Funktionalität selbst.
Mein Vorschlag wie schon vorher: die Attribute soll die sichtbaren Readings umbenennen, unanhängig davon, ob das schon intern 'umbenannt' wurde oder nicht. Vielleicht sogar so: wenn die Angabe mit Zahl gemacht wird (temperature1) dann soll nur ein bestimmtes Readings umbnannt werden, wenn ohne (temperature) dann die ganze Gruppe, also alle temperature.*
Dann könnte ich ein verständliches Text dazu schreiben ;)
also anstatt diesem:
attr node mapReadingType_TEMP xyz
dieses:
attr node mapReadingType_temperature xyz
Zur Frage nach der Benennung der Readings:
Von Hintelegen aller bekannten Sketches im Modul halte ich nichts.
Aus meiner Sicht wäre ganz gut, wenn bei der ersten Reading die Nummer entfallen könnte (weil die allermeisten Sensoren keine mehrere gleichartigen Readings haben), die andere gleichartigen werden dann durchnumeriert. Jede Art beginnt mit 1:
temperature
temperature1
temperature2
humidity
humidity1
Zum eindeutigen und wiederholbaren Erkennen sollten doch die Presentation Meldungen reichen. Jeder Sensor sendet diese beim Start, noch bevor die erste Werte kommen. Man könnte sie alle sammeln, sortieren, zur Namensmapping nutzen. Das dürfte eine sicherre Methode sein.
(Ich könnte zum Testen einen Sensor mit mehreren gleichartigen Dingen basteln.)
Was hälst du davon?
Grüße,
Alexander
Hallo Norbert, Hallo Alexander,
Vielen Dank an Euch beiden fuer diese grandiose Arbeit!
Das Modul funktioniert einwandfrei, ich bin total begeistert.
Vorab noch eine Entschuldigung - ist mein erster Beitrag im forum, Bitte um Nachsicht, wenn das Format schrecklich ist/wird.
Ich habe bisher mit einem Node mit mehreren Aktoren (Relais) getestet - funktioniert prima
zur Konfiguration/Implementierung hab noch ein paar Fragen
1) inclusion mode, wird der Node angelegt, das Relay aber nicht
... es koennte folgendes in set angelegt/zugefuegt werden
"LIGHT_x" => [qw(on off)],
"DIMMER_x" => "",
+ aktueller Wert des Pins in die Readings ????
... bin mir nicht sicher, ob man den abfragen kann
Frage: Kann man das implementieren?
2) wie sieht das setCommands bei einen V_DIMMER, V_LIGHT_LEVEL, aus?
Wunsch:
fhem:> attr MYSENSOR_1 setCommands dimmer1:DIMMER_1:0
fhem:> set MYSENSOR_1 dimmer1 50
Aenderung: 10_NYSENSORS_DEVICE.pm:132
my ($type,$childId,$mappedValue);
if (defined @values) {
my $value = @values ? join " ",@values : "";
($type,$childId,$mappedValue) = readingToType($hash,$1,$value);
}
else{
($type,$childId,$mappedValue) = readingToType($hash,$setcommand->{var},$setcommand->{val});
}
Workaround:
fhem:> attr MYSENSOR_1 setCommands DIMMER_1:DIMMER_1:1
fhem:> attr MYSENSOR_1 setCommands DIMMER_2:DIMMER_2:1
fhem:> set MYSENSOR_1 DIMMER_1 50
fhem:> set MYSENSOR_1 DIMMER_1 80
Frage: Kann man das implementieren, oder besser den Workaround verwenden?
3) bei den Readings erscheinen unterschiedliche ja nach Inhalt von requestAck:
wenn requestAck == 1 wird switch_x aktualisier
wenn requestAck == 0 wird LIGHT_x aktualisier
evtl. hier %static_mappings
---
LIGHT_1 0 2014-10-24 04:56:50
LIGHT_2 0 2014-10-24 04:59:27
switch_1 on 2014-10-24 04:46:14
switch_2 on 2014-10-24 04:19:35
Frage: Kann ich das konfigurieren, dass die Readings immer im gleichen Wert
ankommen, und wenn ja wie?
4) set MYSENSOR_1 LIGHT_1 1
=> FM: Unknown argument LIGHT_1, choose one of clear off1 off2 on1 on2 reboot time
- sollte aber gehen: siehe 10_MYSENSORS_DEVICE.pm:124
$command =~ /^(.+_\d+)$/ and do {
- evtl. moeglich, wenn LIGHT_x automatisch angelegt wird (siehe Pkt.1)
Workaround:
fhem:> attr MYSENSOR_1 setCommands LIGHT_1:LIGHT_1:1 LIGHT_2:LIGHT_2:1
fhem:> attr MYSENSOR_1 setCommands LIGHT_2:LIGHT_2:1
fhem:> set MYSENSOR_1 LIGHT_1 1
fhem:> set MYSENSOR_1 LIGHT_1 0
fhem:> set MYSENSOR_1 LIGHT_2 1
fhem:> set MYSENSOR_1 LIGHT_2 0
Frage: Kann man das implementieren, oder besser den Workaround verwenden?
Vielen Vielen Dank nochmals an Euch!! und Viele Gruesse
enrico
zu 1) ich verstehe leider nicht, was Du genau meinst. Ich glaube Du beziehst Dich hier auf eine veraltete Version. Released sind die Dateien 00_MYSENSORS.pm und 10_MYSENSORS_DEVICE.pm. In letzterer sieht das vordefinierte Mapping so aus:
my %static_mappings = (
V_TEMP => { type => "temperature" },
V_HUM => { type => "humidity" },
V_PRESSURE => { type => "pressure" },
V_LIGHT_LEVEL => { type => "brightness" },
V_LIGHT => { type => "switch", val => { 0 => 'off', 1 => 'on' }},
);
Da fehlen natürlich noch jede Menge Variablentypen. Was soll den für V_DIMM erscheinen? Einfach nur 'dimm'?
Der Aktuelle Code ist im SVN. Sollte per update rüberkommen. Wenn Du einen eigenen Sketch (mit mehreren Aktoren) verwendest, poste den bitte unbedingt auch. (Das automatische Anlegen basiert auf den Presentation-messages des Nodes, wenn der z.B. nicht alle Sensoren/Aktoren meldet, dann geht's nicht)
2) Das Attribut 'setCommands' kann immer nur einmal pro instanz definiert werden. Das sind Kommandos, die man ohne Angabe eines Wertes abschicken will. Also so was wie 'set Wohnzimmerlicht on'. Man muss alle Kommandos gemeinsam in einem Attribut definieren.
Das was Du vermultlich machen willst sollte etwa so gehen:
'setReadings_DIMMER_1 0,10,20,30,40,50,60,70,80,90,100'
'setReadings_DIMMER_2 0,10,20,30,40,50,60,70,80,90,100'
3)
das mit dem requestAck klingt nach Bug. Schau ich mir an, würde aber gerne vorher wissen, welche Version Du genau verwendest. Deinen Sketch muss ich dazu auch sehen, weil das Update der Readings bei aktiviertem RequestAck durch den Inhalt der Achnowledge-message des Sensors bestimmt wird.
4) LIGHT_1 heißt in der Released version ohne eigenes mapReadingType-attribut 'switch_1' und kann mit per 'set xxx switch_1 on' bzw. 'set_xxx switch_2 off' ohne weitere Einstellungen geschaltet werden.
Gruß,
Norbert
Hallo!
Interessante Sache, das MySensors Thema!
Dazu noch eine Frage: Bei Homematic gibt es ja nach dem Schalten eine Rückmeldung von den Sensoren, ob die Lampe nun erfolgreich eingeschaltet wurde. Ist das bei MySensors genauso?
Wenn ja - dann hab ich genau sowas gesucht! MySensors hat ja wahnsinnig viele Möglichkeiten an Sensoren/Aktoren!!
Zitat von: thunder1902 am 24 Oktober 2014, 08:10:21
...Rückmeldung von den Sensoren, ob die Lampe nun erfolgreich eingeschaltet wurde. Ist das bei MySensors genauso?
ja, kann mit dem Attribut 'requestAck' an- bzw. abgestellt werden.
Hallo Alex,
danke für die umfangreiche Rückmeldung.
Zitat von: hexenmeister am 23 Oktober 2014, 23:17:52
Warnings sind gefühlt weniger geworden. Bei Reset des Nodes kommen aber noch: (perl-warnings entsorgt...)
Diese Warnings sollten jetzt weg sein (http://sourceforge.net/p/fhem/code/6803/).
Zitat von: hexenmeister am 23 Oktober 2014, 23:17:52
Mir schwebt folgendes vor:
- Min/Max ID per Attribut definieren (damit man mehrere unanhängige Ranges für mehrere IOs definieren kann.)
+ es gibt ein neues Attribute 'last-sensorid' mit dem man den Range der zu vergebenden Ids nach oben hin begrenzen kann. ('first-sensorid' gab es ja schon).
Die id's werden jetzt der Reihe nach aus dem Konfigurierten Range (Default 20-254) vergeben. Schon belegte IDs werden dabei übersprungen.
Zitat von: hexenmeister am 23 Oktober 2014, 23:17:52
Aus meiner Sicht wäre ganz gut, wenn bei der ersten Reading die Nummer entfallen könnte
[...]
Zum eindeutigen und wiederholbaren Erkennen sollten doch die Presentation Meldungen reichen.
Dafür müsste man die Zuordnung Reading-name <-> childId in Attribute(n) speichen, weil man die Presentation-messages nicht nochmal anfordern kann und die childIds nicht einfach <gewünschteReadingNummer>-1 sind. Sonst wäre die Zuordnung beim FHEM-neustart weg.
also etwa so:
attr mapReading_<name> <childId> <readingType>
attr mapReading_temperature5 25 temperature
Damit wäre allerdings die durch 'mapReadingType_<basename> <type>' von Dir gewünschte einfache Zuordnung für alle Readings eines Typs hinfällig.
Gruß,
Norbert
Hallo Norbert,
Vielen Dank fuer die schnelle Antwort!
Zu den verwendeten Versionen:
fhem: fhem-code-6803-trunk (hab ich grad aktualisiert)
MySensors: Standard-Beispiel fuer Relays (mit 2 Relais)
https://github.com/mysensors/Arduino/blob/master/libraries/MySensors/examples/RelayActuator/RelayActuator.ino
zu 1)
bei aktiven inclusion-mode ist im logfile folgendes zu sehen
2014.10.24 08:53:06 5: MYSENSORS Read: Rx: fr=001 ci=255 c=000(C_PRESENTATION) st=018(S_ARDUINO_REPEATER_NODE) ack=0 '1.4
2014.10.24 08:53:06 5: MYSENSORS Read: Rx: fr=001 ci=003 c=000(C_PRESENTATION) st=000(S_DOOR ) ack=1 '
2014.10.24 08:53:08 5: MYSENSORS Read: Rx: fr=001 ci=001 c=000(C_PRESENTATION) st=003(S_LIGHT ) ack=0 '1.4
2014.10.24 08:53:08 5: MYSENSORS Read: Rx: fr=001 ci=002 c=000(C_PRESENTATION) st=003(S_LIGHT ) ack=0 '1.4
... im fhem wird folgendes angelegt:
CFGFN
DEF 1
IODev gateway
I_SKETCH_NAME Relay
I_SKETCH_VERSION 1.0
NAME MYSENSOR_1
NR 31
STATE ???
TYPE MYSENSORS_DEVICE
ack 0
radioId 1
... da kann man die Sensoren/Aktoren nicht sehen, die bekommt man nur raus, wenn man ins logfile schaut.
Mein Wunsch waere, dass die automatisch unter den Sets auftauchen.
... es koennte doch fuer die Aktoren das Kommando aus Punkt 2 automatisch aufgerufen werden.
z.B.: attr MYSENSOR_1 setReading_switch_1 0,1
Weiter waere es klasse, wenn man beim inclusion-mode oder per get-Funktion den aktuellen Wert der Aktoren/Sensoren abfragen kann.
Da man sonst keinen aktuellen Zustand/Wert der Aktoren bekommt, bis man den Wert einmal geaendert hat.
bin mir nicht sicher, ob das mit den mysensor-protokoll geht
evtl. so
NODE_ID, CHILD_ID, TYPE , ACK, SUB-TYPE, PAYLOAD
1 , 1 , C_REQ, [01], S_LIGHT
1 , 2 , C_REQ, [01], S_LIGHT
1 , 3 , C_REQ, [01], S_DOOR
wollte das so ausprobieren ...
fhem:> {MYSENSORS::DEVICE::sendClientMessage($defs{MYSENSOR_1}, childId => 1, cmd => 2, subType => 2)}
kommt aber nichts vom node zurueck.
2014.10.24 10:42:33 5: Cmd: >{MYSENSORS::DEVICE::sendClientMessage($defs{MYSENSOR_1}, childId => 1, cmd => 2, subType => 2)}<
2014.10.24 10:42:33 5: MYSENSORS send: Rx: fr=001 ci=001 c=002(C_REQ ) st=002(V_LIGHT ) ack=0 '
2014.10.24 10:42:33 5: MYSENSORS/RAW: /0;
2014.10.24 10:42:33 5: MYSENSORS/RAW: 0;/0;3;0;9;send
2014.10.24 10:42:33 5: MYSENSORS/RAW: 0;0;3;0;9;send/: 0-0-1-1 s
2014.10.24 10:42:33 5: MYSENSORS/RAW: 0;0;3;0;9;send: 0-0-1-1 s/=1,c=2,t=2,p
2014.10.24 10:42:33 5: MYSENSORS/RAW: 0;0;3;0;9;send: 0-0-1-1 s=1,c=2,t=2,p/t=0,l=0,st=o
2014.10.24 10:42:33 5: MYSENSORS/RAW: 0;0;3;0;9;send: 0-0-1-1 s=1,c=2,t=2,pt=0,l=0,st=o/k:
2014.10.24 10:42:33 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=009(I_LOG_MESSAGE ) ack=0 'send: 0-0-1-1 s=1,c=2,t=2,pt=0,l=0,st=ok:
2014.10.24 10:42:33 5: MYSENSORS gateway gateway: send: 0-0-1-1 s=1,c=2,t=2,pt=0,l=0,st=ok:
zu 2)
ok, verstanden. funktioniert. Merci!
fhem:> attr MYSENSOR_1 setReading_switch_1 0,1
dann geht folgendes ...
fhem:> set MYSENSOR_1 switch_1 0
.... genau das hab ich gesucht!
zu 3)
ist auch mit der aktuellen Version (fhem-code-6803-trunk) reproduzierbar.
wenn man in den sets den falschen Wert hat.
fhem:> attr MYSENSOR_1 setReading_LIGHT_1 0,1
mit den richtigen Werten (siehe Pkt.2) tritt das Problem nicht auf.
fhem:> attr MYSENSOR_1 setReading_switch_1 0,1
zu 4)
hab ich probiert ...
fhem:> set MYSENSOR_1 switch_1 on
funktioniert, wenn man die Aktoren wie unter Punkt 2, von Dir beschrieben anlegt.
Die Punkte 2,3,4 haben funktioniert, mit dem Tipp in Punkt 2.
Vielen Dank fuer die schnelle Hilfe!!
Punkt 1 - waere klasse wenn das automatisch geht.
zu 1) verstanden. Autocreate der passenden Attribute basierend auf den Presentation-messages war eh noch auf meiner ToDo-liste. Das ist aber immer erst der zweite Schritt - erst muss man sich über die Semantik der zu erzeugenden Attribute einig sein, sonst hat man bei jeder Änderung die doppelte Arbeit.
Hallo Norbert,
Vielen Dank fuer die schnelle Antwort!
Dann war ich mit dem autocreate wohl etwas zu ungeduldig :-) sorry!
Mit den Tipp von Dir funktioniert ja erst mal alles, dann kan ich noch ein wenig basteln und testen.
Vielen Dank und Viele Gruesse
enrico
Ich habe immer noch das Problem das beim Ethernet-Gateway und auch beim Serial Gateway (2 unterschiedliche Arduinos und Transceiver) nach einiger Zeit keine Daten mehr kommen. ACK habe ich auf 1 gesetzt. Gateway sagt auch connect an. Ich habe 3 unterschiedliche Sensoren hier (Hum, Vtemp und V_Tripped). Es kommt nach einiger Zeit nichts mehr an.
Fehlermeldung im Log (verbose 5), keine ahnung ob das was bringt...
2014.10.24 20:01:54 1: PERL WARNING: Argument "" isn't numeric in sprintf at FHEM/lib/Device/MySensors/Message.pm line 40.
2014.10.24 20:01:54 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at FHEM/lib/Device/MySensors/Message.pm line 40.
2014.10.24 20:01:56 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at FHEM/lib/Device/MySensors/Message.pm line 40.
2014.10.24 20:01:57 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at FHEM/lib/Device/MySensors/Message.pm line 40.
robin
Wie lange dauert es, bis die Daten nicht mehr kommen?
Wie gesagt, bei mir läuft GateWay seit Tagen ohne Unterbrechung.
Die Sensoren lasse ich nicht durchlaufen, aber zum Testen liefen sie schon vielen Stunden am Stück.
Mittlerweile habe ich hier einen etwas monströsen Aufbau mit DHT11 (Temperatur+Feuchte), BH1750 (Licht) und HC-SR04 (Entfernung).
Sketches lassen sich sehr einfach erweitern. Und es sind immer noch erst 69% Flash und 45% RAM des Mini Pro belegt.
Die Lib für BH1750 ist aber doof (nicht genau genug im unteren Bereich, nach oben arg begrenzt). Ich habe mal eine bessere erstellt: http://s6z.de/cms/index.php/arduino/sensoren/15-umgebungslichtsensor-bh1750
Kann aber ohne Anpassung so nicht verwendet werden (allein weil 2 Bytes für den Wert nicht reichen)
30 minuten ungefähr
auch interessant: er zeigt connected an, obwohl das Netzwerk-kabel schon längst wieder abgezogen ist.
(auch im state)
connection
connected
2014-10-24 21:15:01
erst nach shutdown restart steht im state disconnected
zu Net-Gateway kann ich leider nichts sagen, muss ich mal erst einen aufbauen (habe gerade keine Transmitter mehr).
Aber mit dem Serial Gateway laufen die Sensoren definitiv wesentlich länger als eine halbe Stunde problemlos.
Um das Problem einzugrenzen: hast Du an Deinen Gateway die LEDs angeschlossen, dann kannst Du sehen, ob gerade gesendet/empfangen wird. Wäre interessant festzustellen, ob die Daten empfangen werden und nicht zu FHEM weitergeleitet werden, oder gar nicht erst vom Sensor losgesendet werden. Die Beispielsketches senden übrigens nur, wenn sich der Wert ändert. Zum Testen wäre sinnvoll, diese Einschränkung auszubauen.
Hallo Norbert,
ich teste ein wenig weiter. Die Warnings sind wesentlich weniger geworden. Beim Reset habe ich keine mehr. Trotzdem finde ich im Log mal welche, habe aber bis jetzt nicht sicher provozieren können:
2014.10.24 23:02:09.817 1: PERL WARNING: Argument "" isn't numeric in sprintf at FHEM/lib/Device/MySensors/Message.pm line 42.
2014.10.24 23:02:09.818 3: stacktrace:
2014.10.24 23:02:09.819 3: main::__ANON__ called by FHEM/lib/Device/MySensors/Message.pm (42)
2014.10.24 23:02:09.820 3: Device::MySensors::Message::dumpMsg called by ./FHEM/00_MYSENSORS.pm (374)
2014.10.24 23:02:09.821 3: MYSENSORS::sendMessage called by ./FHEM/10_MYSENSORS_DEVICE.pm (316)
2014.10.24 23:02:09.821 3: MYSENSORS::DEVICE::sendClientMessage called by ./FHEM/10_MYSENSORS_DEVICE.pm (276)
2014.10.24 23:02:09.822 3: MYSENSORS::DEVICE::onInternalMessage called by ./FHEM/00_MYSENSORS.pm (315)
2014.10.24 23:02:09.823 3: MYSENSORS::onInternalMsg called by ./FHEM/00_MYSENSORS.pm (261)
2014.10.24 23:02:09.823 3: MYSENSORS::Read called by fhem.pl (2923)
2014.10.24 23:02:09.824 3: main::CallFn called by fhem.pl (598)
ok, ich werde mir mal die LEDs mit einbauen.
Das nur ein Wert gesendet wird, wenn sich was ändert, finde ich schon mal gut. Ist mir auch schon aufgefallen.
Ich habe das Problem mit USB-Serial auch gehabt mit einem anderen Arduino-Aufbau, darum wundert es mich jetzt, das ich den gleichen Fehler im Ethernet-Aufbau auch habe.
Ich werde mein 'Monster-Sensor' an eine Batterie anschliessen und die Nacht durchlaufen lassen. Mal sehen, ob ich das Problem nachstellen kann.
Glaube ich aber nicht, 30 Minuten und dann nichts würde mir längst auffallen.
Hast Du schon mal im Log nachgesehen mit LogLevel 5, kommt da was von MySensors wenn die Werte nicht mehr aktualisiert werden?
Ich werde für meine Sketches dieses Verhalten sicher ändern. Dass nur eine Änderung gesendet wird ist schon nicht schlecht, aber zu grob.
Bei Licht will ich z.B. erst senden, wenn die Änderung mehr als 10% betrug (weil ansonsten zu 'unruhig' wird und der Messbereich logarithmisch ist).
Gleichzeitig will ich aber spätestens nach 60 Minuten einen Wert (für jede Reading) haben, damit ich die 'tote' Sensoren sicher als solche erkennen kann.
@Norbert
Das die Zuordnung mit dem Neustart weg ist, ist in der Tat ein Problem.
Ich probieren mal das Problem von der anderen Seite zu beleuchten.
Was ich erreichen will ist... Die meisten Sensoren dürften in der Praxis die T/H Sensoren mit nur je einem Wert pro Art sein. Es wäre schön (und mit den HM und anderen Sensoren homogen) wenn die Readings 'temperature' und 'humidity' heißen würden. Soweit klar. Die Frage ist, wie man das praxistauglich erreicht.
Wäre vlt. ein gangbarer Weg, wenn man den Inklusion-Vorgang, genauer gesagt dabei empfangenen Presentation-Messages für den Aufbau von Attributen benutzt, die genau solches Mapping definieren? Dafür braucht man (zusätzlich zum Mapping ganzen Readings-Gruppen) auch eine Möglichkeit die einzelnen Readings zu remappen.
Ich hoffe, ich habe mich halbwegs verständlich ausgedrückt.
Wegen des instabilen Gateway-problems: Da bist Du nicht der einzige (siehe z.B. http://forum.mysensors.org/topic/466/ethernet-gateway-problem/86). Scheint ein Problem mit dem nRF24L01 zu sein bzw. dass die Gateway-sketches den Chip nach einem Fehler nicht neu initialisieren.
Wegen der Zuordnung beim Neustart/SensorTypen/Autocreate:
Ganz einfach ist das leider nicht. Es gibt auch SensorTypen, die senden bzw. empfangen mehrere VariablenTypen unter einer Child-Id (z.B. S_COVER) und man kann ja auch unterschiedliche SensorTypen auf einem Node mischen (wozu hat ein Arduino sonst soviele Pins...). In der Presentation-message wird auch nicht der Typ der Variablen, sondern der SensorTyp übermittelt (der in der Regel vom Zahlenwert her von den dazugehörigen VariablenTypen abweicht). Die Mappings dafür habe ich aus den Example-sketches schon zusammengesucht.
Es wäre jedenfalls mehr als sinnvoll, wenn man sich auch darauf verlassen könnte, dass alle zu einer Child-id gehörigen Readings auch sicher die gleiche Suffix hätten. Ich lass das daher erst mal mit der vom Autocreate angehängten childId, der User kann die Readings ja selber nach Gusto umbenennen.
ZitatWegen des instabilen Gateway-problems
Nur komisch, dass ich keinerlei von diesen Problemen feststellen kann...
Habe ich besseren Chip erwischt? Habe ich Glück mit den Funkverhältnissen?
ZitatEs gibt auch SensorTypen, die senden bzw. empfangen mehrere VariablenTypen unter einer Child-Id
Sowas gehört verboten ;)
Aber gut, ich sehe die Schwierigkeiten ein. Und man kann ja trotzdem alles noch nach seinem Wunsch einstellen. Sollte ich eine bahnbrechende Idee haben, melde ich mich damit ;)
Erstmal vielen Dank!
Hallo Norbert,
danke für die Info. Dann kann ich meine Bastelei mit dem Ethernet ja jetzt beenden. Ich habe es sogar noch geschafft, den ENC28J60 Sketch in einem Nano zu pumpen.
Hatte aber das gleiche Problem, Abbruch nach einigen Miinuten.
Alexander:
bei mir leuchten die LEDs ständig wenn ich die drei auf pin 7,8,9 verbinde. ich habe aber jetzt keinen passenden widerstand gefunden. Wird aber wohl nicht daran liegen.
robin
Hallo Zusammen
Ist Euch folgende Fehlermeldung bekannt ?
Can't locate Device/MySensors/Constants.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/sh$
BEGIN failed--compilation aborted at ./FHEM/00_MYSENSORS.pm line 77.
Versuch auf einem Raspi mit der aktuell eingecheckten Version.
Gruß Stefan
@Robin
Mit den LEDs ist komisch. An den Widerständen liegt es sicher nicht.
Bei mir leuchten RX und TX entsprechend beim Senden und Empfangen. Kan man sehr gut beobachten. Error-LED habe ich bis jetzt noch nicht leuchten sehen.
Irgendwas muss an deinem Aufbau falsh sein, ich habe nur leider keine Idee was.
Zitat von: Porky666 am 25 Oktober 2014, 00:53:09
Can't locate Device/MySensors/Constants.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/sh$
BEGIN failed--compilation aborted at ./FHEM/00_MYSENSORS.pm line 77.
Das besagt, dass die Constants.pm fehlt (und sicher auch Message.pm). Diese liegen nicht direkt in FHEM-Ordner, sondern in FHEM/lib/Device/MySensors
Wie hast Du die Module installiert?
Habe nur mit Update in FHEM, gesehen das die Module auftauchten.
Hab mir mal ein serielles Gateway zusammen gelötet und einen DHT22 Sensor und diese dann getestet mit serieller Konsole, das funktionierte unter Windows ganz gut, nun wollte ich die beiden mal ins FHEM einbinden.
Gruß Stefan
sind die Dateien in FHEM/lib/Device/MySensors vorhanden?
So hab aus dem Github die Dateien geholt und nun kommt das :
"00_MYSENSORS"
2014.10.25 01:26:41 1: PERL WARNING: (Missing operator before MYSENSORS?)
2014.10.25 01:26:41 1: reload: Error:Modul 00_MYSENSORS deactivated:
Unrecognized character \xC2; marked by <-- HERE after at master <-- HERE near column 50 at ./FHEM/00_MYSENSORS.pm line 13.
2014.10.25 01:26:41 0: Unrecognized character \xC2; marked by <-- HERE after at master <-- HERE near column 50 at ./FHEM/00_MYSENSORS.pm line 13.
Gruß Stefan
Du hast sicher die Dateien per Copy/Paste aus dem Browserfenster übertragen. Dabei ist die Kodierung kaputt gegangen. Lade entweder im RAW Modus, oder lade am besten den ganzen ZIP und packe gezielt die notwendigen Dateien aus.
Ne ich habe die Dateien per wget vom raspi aus gezogen.
Aber ich Schau mal das ich mir die Zip ziehe.
Danke erstmal.
Gruß
Stefan
Unrecognized character \xC2; deutet auf UTF-8 Kodierung von bestimmten Charakters. Kann schon sein, dass das mit wget auch passiert. Hast Du die RAW Links verwendet? So was wie: https://raw.githubusercontent.com/ntruchsess/fhem-mirror/master/fhem/FHEM/lib/Device/MySensors/Message.pm
Nein habe ich nicht, ich habe die File-Links aus dem Webinterface verwendet.
Nun habe ich das Git-Repo geclont und die Dateien herauskopiert und bekomme die nächste FM:
2014.10.25 01:48:33 0: Attempt to reload Device/MySensors/Constants.pm aborted.
Compilation failed in require at ./FHEM/00_MYSENSORS.pm line 78.
BEGIN failed--compilation aborted at ./FHEM/00_MYSENSORS.pm line 78.
So nach einem shutdown restart klappt es jetzt, das GW ist initialisiert, jetzt schauen wir mal ob ich meinen DHT22 auch einbinden kann.
Vielen Dank für die Hilfe.
Gruß Stefan
Datei wurde nicht (richtig) geladen. Wollte gerade Restart vorschlagen.
DHT wird schon funktionieren, habe gerade auch (mit noch weiteren Sensoren in einem Node) am Laufen.
Denk an die Inclusion ;)
Ja läuft, die Readings kommen nun an und auch in Celsius die Temperatur, das hat alles prima geklappt.
Nochmal Danke und eine angenehme Nachtruhe, ich muss mich jetzt ablegen muss Heute noch zur Spätschicht.
Gruß Stefan
Hallo Alexander,
LED: die LEDs haben auch beim Serial USB Dauerpower. Hier werden die LED an D4,5,6 angeschlossen.
Woran kann das liegen? Nochmal einen Abruf von mySensors machen?
Update (http://sourceforge.net/p/fhem/code/6806/):
- Automatisches Erzeugen der setReading/mapReading-Attribute (basierend auf den Presentation-messages beim Neustart eines Sensors). Der inclusion-mode muss dafür am Gateway aktiv sein.
EDIT:
- die Reading-namen können jetzt frei gewählt werden (autocreate legt sie zwar nach dem Schema Typ+ChildId an, aber man kann anschließend die setReading-attribute nach Gusto manuel anpassen bzw. nach der Vorlage neu setzen).
2. EDIT:
die an die per autocreate erzeugten Readings angehängte ChildId wird bei ChildId == 1 jetzt weggelassen. Damit erzeugen Nodes, die nur 1 Sensor haben die von Alex gewünschten Readings ohne angehängten Index.
- Norbert
@Robin
Die Pins 4,5 und 6 sind richtig. An dem Sketch kann es kaum liegen. Mal eine ganz blöde Frage: Hast Du die LEDs an VCC oder an GND angeschlossen? Ich habe bei mir (aus Gewohnheit) fast schon an GND gesteckt. Würde Dauerleuchten erklären.
Hallo Norbert!
Das klingt prima, vielen Dank! Ich muss jetzt erstmal weg, heute Abend teste ich alles mal durch :)
Grüße,
Alexander
Alexander,
du bist mein Held.
5V -> LED -> Pin 7,8,9
Und im Sketch die Zeile freigeben, das die optionalen LEDs benutzt werden!
Also Rolle rückwärts, wieder den alten Sketch mit dem Arduino Uno und den Ethernet-Gateway aufgebaut, wie ich in meinem Blog und im Youtube-Video beschrieben habe:
http://blog.moneybag.de/fhem-sensoren-an-fhem-mit-nrf24l01-transceiver/
LED 8 flackert nur kurzzeitig, wenn ein Signal vom Sensor empfangen wurde.
robin
Hallo Norbert,
das autocreate funktioniert supi!! (getestet mit Relay) Vielen Dank fuer die Implementierung!!
Repaeter-Mode und Protokoll-Version wird auch erkannt und in den internals + attributes gesetzt - das laesst keine Wuensche offen :-)
Vielen Dank!!
Mir ist noch was aufgefallen bzgl. den Attribute requestAck.
Das geht bei mir in eine Endlosschleife (s.u.).
Reproduzieren kann ich das, wenn ich das Attrbiute setze
fhem:> attr gateway requestAck 1
und anschliessend einen Node einschalte.
dann wird gateway=>internals=>outstandingAck = 1
Beeenden laesst sich dieser Endlosloop nur indem man den requestAck wieder loescht.
fhem:> delattr gateway requestAck
Auszug aus dem logfile:
2014.10.25 20:28:09 5: MYSENSORS Read: Rx: fr=001 ci=255 c=003(C_INTERNAL ) st=006(I_CONFIG ) ack=0 '0'
2014.10.25 20:28:09 5: MYSENSORS send: Rx: fr=001 ci=255 c=003(C_INTERNAL ) st=006(I_CONFIG ) ack=1 'M'
----- anfang Endlosschleife
2014.10.25 20:28:09 5: SW: 313b3235353b333b313b363b4d0a
2014.10.25 20:28:09 4: MYSENSORS_DEVICE MYSENSOR_1: respond to config-request
2014.10.25 20:28:09 5: MYSENSORS/RAW: /0;0;3;0;9
2014.10.25 20:28:09 5: MYSENSORS/RAW: 0;0;3;0;9/;send: 0-0-1
2014.10.25 20:28:09 5: MYSENSORS/RAW: 0;0;3;0;9;send: 0-0-1/-1 s=255,c=
2014.10.25 20:28:09 5: MYSENSORS/RAW: 0;0;3;0;9;send: 0-0-1-1 s=255,c=/3,t=6,pt=0,l
2014.10.25 20:28:09 5: MYSENSORS/RAW: 0;0;3;0;9;send: 0-0-1-1 s=255,c=3,t=6,pt=0,l/=1,st=ok:M
2014.10.25 20:28:09 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=009(I_LOG_MESSAGE ) ack=0 'send: 0-0-1-1 s=255,c=3,t=6,pt=0,l=1,st=ok:M'
2014.10.25 20:28:09 5: MYSENSORS gateway gateway: send: 0-0-1-1 s=255,c=3,t=6,pt=0,l=1,st=ok:M
2014.10.25 20:28:09 5: MYSENSORS/RAW: /0;0;3;0;9
2014.10.25 20:28:09 5: MYSENSORS/RAW: 0;0;3;0;9/;read: 1-1-0
2014.10.25 20:28:09 5: MYSENSORS/RAW: 0;0;3;0;9;read: 1-1-0/ s=255,c=3,
2014.10.25 20:28:09 5: MYSENSORS/RAW: 0;0;3;0;9;read: 1-1-0 s=255,c=3,/t=6,pt=0,l=1
2014.10.25 20:28:09 5: MYSENSORS/RAW: 0;0;3;0;9;read: 1-1-0 s=255,c=3,t=6,pt=0,l=1/:M
1;255;
2014.10.25 20:28:09 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=009(I_LOG_MESSAGE ) ack=0 'read: 1-1-0 s=255,c=3,t=6,pt=0,l=1:M'
2014.10.25 20:28:09 5: MYSENSORS gateway gateway: read: 1-1-0 s=255,c=3,t=6,pt=0,l=1:M
2014.10.25 20:28:09 5: MYSENSORS/RAW: 1;255;/3;1;6;M
2014.10.25 20:28:09 5: MYSENSORS Read: Rx: fr=001 ci=255 c=003(C_INTERNAL ) st=006(I_CONFIG ) ack=1 'M'
2014.10.25 20:28:09 5: MYSENSORS send: Rx: fr=001 ci=255 c=003(C_INTERNAL ) st=006(I_CONFIG ) ack=1 'M'
----- ende Endlosschleife
Die Zeilen zwischen anfang- und ende-Endlosschleife kommen pro Sekunde ca. 40x
Zitat von: fh168 am 25 Oktober 2014, 16:22:29
LED 8 flackert nur kurzzeitig, wenn ein Signal vom Sensor empfangen wurde.
Prima, so ist das bei mir auch.
Hi,
ich wollte mal fragen, ob mit MySensors auch die Sensoren von GrovePi:
http://www.element14.com/community/thread/30023/l/grovepi-for-the-raspberry-pi
bzw.
http://ras-pi.de/2014/09/grovepi/
als Sensoren in FHEM eingelesen werden können?
Oder ob es irgendwie anders geht?
Gruß
Bracew
Hallo Norbert,
ich habe mein bestehendes Node gelöscht, neue Version aus SVN geholt und meinen Sensor neu angelernt. Interesanterweise hat das nicht gleich funktioniert und ich musste mehrfach Inclusion-Mode starten und den Sensor resetten bevor alles angelegt wurde. Ob das daran liegt, das mein Testsensor mitlerweile vier verschiedene Werte liefert?
Danach war jedoch alles perfekt angelegt. Fast. Eine Kleinigkeit habe ich doch (sorry, Berufskrankheit ;) )
Die Readings für Temperatur und Luftfeuchte hießen entsprechend. Die für Distance und Lichtstärke waren jedoch mit ihrer ID angelegt. Durch die Änderung der Attibute war das gleich erledigt, ein wenig inkonsequent ist das aber schon.
Wie dem auch sei, ich finde die derzeitige Funktionalität praktisch perfekt :) Vielen Dank!
Ach ja, kriegt man dür den Relay irgendwie auch 'toggle' hin? (brauche ich zwar nicht, aber vollständigkeitshalber)
Grüße,
Alexander
Zitat von: Bracew am 25 Oktober 2014, 22:01:22
ich wollte mal fragen, ob mit MySensors auch die Sensoren von GrovePi:
Beim kurzen Blick scheinen diese Dinger nichts mit MySensor zu tun zu haben. Sind auch gar nicht Funk-basiert.
Zitat von: Bracew am 25 Oktober 2014, 22:01:22
als Sensoren in FHEM eingelesen werden können?
Bestimmt, man braucht halt ein entsprechendes Modul. Wenn es bis jetzt keinen gibt, kannst ja (in einem neuen Thread) das System den Entwicklern schmackhaft machen. Mit MySynsors hat es ja wunderbar funktioniert ;)
Grüße,
Alexander
OK, siehe:
http://forum.fhem.de/index.php/topic,28286.0.html
Zitat von: eni am 25 Oktober 2014, 21:02:54
Mir ist noch was aufgefallen bzgl. den Attribute requestAck.
Das geht bei mir in eine Endlosschleife (s.u.).
Ist mir bekannt. Bisher ist das noch sehr simpel implementiert. Wenn requestAck gesetzt ist, dann wird einfach an jedes ausgehende Packet das Requet-ack-flag gesetzt, das Packet zwischengespeichert und auf eine Acknowledge-antwort (das ist im Prinzip das selbe Packet) gewartet. Kommt nix, wird das Packet jede Sekunde (potentiell endlos) wieder transmittet. Das ist zum einen noch nicht wirklich schlau (z.B. sollten die zeitlichen Abstände immer größer werden und das Packet irgendwann verworfen werden, wärend ein Fehler-reading gesetzt wird).
Leider werden manche Packete (z.B. die Antwort auf den Config-request) systematisch nicht wie erwartet acknowledged. Diese Packet-arten dürfen dann outbound auch kein Request-ack-flag bekommen.
Wird demnächst überarbeitet.
- Norbert
Zitat von: hexenmeister am 25 Oktober 2014, 22:01:55
Die Readings für Temperatur und Luftfeuchte hießen entsprechend. Die für Distance und Lichtstärke waren jedoch mit ihrer ID angelegt. Durch die Änderung der Attibute war das gleich erledigt, ein wenig inkonsequent ist das aber schon.
Irgendwie ist das dämlich. Der Sketch mit dem ich teste verwendet die 1 als kleinste ChildId, daher habe teste ich auf > 1 und hänge dann die ChildId zur Sicherstellung der Eindeutigkeit an. Jetzt verwendet Dein Sketch auch die 0 :-(
Prinzipiell könnte man die Readingsnummern auch nur dann hochzählen, wenn beim Eintreffen der Presentation-messages für den entsprechenden Typ schon mapReading-attribute definiert sind. Nur haben dann potentiell nicht alle zu einer ChildId gehörigen Readings die selbe Nummer (wäre wohl auch verwirrend).
- Norbert
Ich habe mein Sketch zwas mittlerweile etwas umgebaut (jetzt auch noch mit einem PIR), aber die 0 habe ich nicht ausgedacht, stand schon so im Humidity-Sketch. Scheinbar gibt es hier keine Vorgaben :(
ZitatNur haben dann potentiell nicht alle zu einer ChildId gehörigen Readings die selbe Nummer (wäre wohl auch verwirrend).
Ist so verwirrend, dass ich das nicht verstanden habe. :) Ich glaube, ich muss das morgen noch mal lesen ;)
Insgesamt ist das alles noch Feintuning, grundsätzlich funktioniert alles schon sehr gut!
(OK, die Sache mit ACK-Wiederholung halte ich noch für wichtig.)
Die Idee mit den drei zusätzlichen LEDs zur Statusanzeige auf dem Gateway ist schon klasse.
Die Stabiltität mit einem Uno und dem W5100 Netzwerk-Shield klappt jetzt auch, zumindest ist der jetzt 10 Stunden ohne Unterbrechungen durchgelaufen.
Wie sieht es nach einem Update oder einer Strom-/ Netzwerkunterbrechung aus?
Ein einfaches shutdown restart funktioniert nicht. Die LEDs bleiben dunkel. Beim Klick auf dem externen inclusion-Button blinkt die LED ungefähr eine Minute, genauso wenn man über Fhem manuell über set gateway inclusion-mode on setzt.
ich helfe mir derzeitig, das ich die einzelnen Sensoren (ich habe testweise mal drei zusammengeklöppelt) resette, dann fängt das LED-Farbenspiel und Geblinke vom Gateway wieder an.
Das kann aber nicht sein, wenn man 20 Sensoren später im Haus verteilt hat.
update: ich wollte gerade einen neuen Sensor anlernen, klicke in der Software auf inclusion mode
root@raspbmc:/opt/fhem# Use of uninitialized value in anonymous hash ({}) at ./FHEM/10_MYSENSORS_DEVICE.pm line 170, <$fh> line 2097.
Use of uninitialized value in anonymous hash ({}) at ./FHEM/10_MYSENSORS_DEVICE.pm line 170, <$fh> line 2097.
Use of uninitialized value in anonymous hash ({}) at ./FHEM/10_MYSENSORS_DEVICE.pm line 170, <$fh> line 2097.
Use of uninitialized value in anonymous hash ({}) at ./FHEM/10_MYSENSORS_DEVICE.pm line 170, <$fh> line 2100.
Use of uninitialized value in anonymous hash ({}) at ./FHEM/10_MYSENSORS_DEVICE.pm line 170, <$fh> line 2100.
Use of uninitialized value in anonymous hash ({}) at ./FHEM/10_MYSENSORS_DEVICE.pm line 170, <$fh> line 2100.
Use of uninitialized value in anonymous hash ({}) at ./FHEM/10_MYSENSORS_DEVICE.pm line 170, <$fh> line 2120.
Use of uninitialized value in anonymous hash ({}) at ./FHEM/10_MYSENSORS_DEVICE.pm line 170, <$fh> line 2120.
Use of uninitialized value in anonymous hash ({}) at ./FHEM/10_MYSENSORS_DEVICE.pm line 170, <$fh> line 2120.
Undefined subroutine &MYSENSORS::DEVICE::ReadingsVal called at ./FHEM/10_MYSENSORS_DEVICE.pm line 414.
Kann man eigentlich das so programmieren, das bei Temperatur / Luftfeuchtigkeitssensoren in den Readings
state T: 12.6 H: 75 2014-10-26 19:14:51
herauskommt, damit man nur eine Zeile wegschreiben muss?
robin
Hallo Zusammen,
da ich die Mysensor Nodes mit Batterie betreibe, habe ich natürlich auch ein Bedarf ein Reading oder 2 mit dem Batterielevel empfangen zu können.
Nun auf [url]http://mysensors.org/build/battery[url] gibt es den Hinweis mit einem einfachen Spannungsteiler über einen Analogen Eingang (A0) die Spannung zu überwachen.
Ich habe das dort verlinkte Batterysensor.ino von Github mal mit dem Humiditysensor.ino gemergt -- aufgespielt und getestet.
Funktioniert mit deinem im FHEM ankommenden Reading Batterylevel als % Angabe. Das kann man auch varirieren mit Battery in Volt oder beides. Vielleicht passts Euch ja.
#include <SPI.h>
#include <MySensor.h>
#include <DHT.h>
#define CHILD_ID_HUM 0
#define CHILD_ID_TEMP 1
int BATTERY_SENSE_PIN = A0;
#define HUMIDITY_SENSOR_DIGITAL_PIN 3
unsigned long SLEEP_TIME = 900000; // Sleep time between reads (in milliseconds)
int oldBatteryPcnt = 0;
MySensor gw;
DHT dht;
float lastTemp;
float lastHum;
boolean metric = true;
MyMessage msgHum(CHILD_ID_HUM, V_HUM);
MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
void setup()
{
analogReference(INTERNAL);
gw.begin();
dht.setup(HUMIDITY_SENSOR_DIGITAL_PIN);
// Send the Sketch Version Information to the Gateway
gw.sendSketchInfo("Humidity", "1.0");
// Register all sensors to gw (they will be created as child devices)
gw.present(CHILD_ID_HUM, S_HUM);
gw.present(CHILD_ID_TEMP, S_TEMP);
metric = gw.getConfig().isMetric;
}
void loop()
{
delay(dht.getMinimumSamplingPeriod());
float temperature = dht.getTemperature();
if (isnan(temperature)) {
Serial.println("Failed reading temperature from DHT");
} else if (temperature != lastTemp) {
lastTemp = temperature;
if (!metric) {
temperature = dht.toFahrenheit(temperature);
}
gw.send(msgTemp.set(temperature, 1));
Serial.print("T: ");
Serial.println(temperature);
}
float humidity = dht.getHumidity();
if (isnan(humidity)) {
Serial.println("Failed reading humidity from DHT");
} else if (humidity != lastHum) {
lastHum = humidity;
gw.send(msgHum.set(humidity, 1));
Serial.print("H: ");
Serial.println(humidity);
}
{
// get the battery Voltage
int sensorValue = analogRead(BATTERY_SENSE_PIN);
Serial.println(sensorValue);
// 1M, 470K divider across battery and using internal ADC ref of 1.1V
// Sense point is bypassed with 0.1 uF cap to reduce noise at that point
// ((1e6+470e3)/470e3)*1.1 = Vmax = 3.44 Volts
// 3.44/1023 = Volts per bit = 0.003363075
float batteryV = sensorValue * 0.003363075;
int batteryPcnt = sensorValue / 10;
Serial.print("Battery Voltage: ");
Serial.print(batteryV);
Serial.println(" V");
Serial.print("Battery percent: ");
Serial.print(batteryPcnt);
Serial.println(" %");
if (oldBatteryPcnt != batteryPcnt) {
// Power up radio after sleep
gw.sendBatteryLevel(batteryPcnt);
oldBatteryPcnt = batteryPcnt;
}
gw.sleep(SLEEP_TIME); //sleep a bit
}}
Gruß
Stefan und Danke für die Prima Arbeit an dem Modul !
Hallo Stefan,
probiere ich aus.
Mir ist auch aufgefallen, das Sketch mit dem Temperatursensor (DS18B20) ziemlich stark an der Batterie nuckelt, ich glaub daran muss man noch arbeiten.
Wie sieht es bei Euren Sensoren aus?
Hier im Forum http://mysensors.org/build/binary (weiter unten) hat jemand den Sleep-Modus verbessert.
LG
/robin
Hallo alle zusammen :-)
melde mich aus meinen Urlaub zurück.
Hier hat sich ja eine ganze Menge getan. Ich bin schon feste am lesen, damit ich auf den aktuellen Stand komme ;D
Gruß Jens
melde mich auch aus dem (Kurz-)Urlaub zurück...
Zitat von: fh168 am 26 Oktober 2014, 09:01:53
Wie sieht es nach einem Update oder einer Strom-/ Netzwerkunterbrechung aus?
Ein einfaches shutdown restart funktioniert nicht.
Reconnect bei als TCP-server arbeitenden Devices ist problematisch, wenn man das Device einfach so neustartet oder ausschaltet. Das bekommt die Gegenstelle (FHEM bzw. 00_MYSENSORS.pm) nämlich gar nicht unmittelbar mit, sondern erst wenn FHEM selber Daten schicken will und die TCP-timeouts ablaufen (das dauert etliche Minuten und wenn 00_MYSENSORS.pm nichts schicken will, merkt es den Verbindungsverlust überhaupt nicht). Eventuell könnte man die I_VERSION C_INTERNAL-message als Heartbeat misbrauchen um mitzukriegen, wenn die Verbindung weg ist, bisher ist so eine Funktion jedenfalls noch nicht eingebaut.
Ein 'shutdown restart' sollte eigentlich die Verbindung neu aufbauen. Damit das zuverlässig vom Arduino erkannt wird, muss man den EthernetGateway-sketch wohl noch etwas überarbeiten - der verläßt sich nämlich zu 100% auf 'EthernetServer::available()' ohne jemals stop() an einem Client-objekt aufzurufen. Wenn da die 4 verfügbaren Sockets 'verbraucht' sind, dann war's das erst mal (bis der WIZ5100-chip die sockets selbsttätig per timeout schließt, was eben auch etwas länger dauern kann).
Zitat von: fh168 am 26 Oktober 2014, 09:01:53
update: ich wollte gerade einen neuen Sensor anlernen, klicke in der Software auf inclusion mode
root@raspbmc:/opt/fhem# Use of uninitialized value in anonymous hash ({}) at ./FHEM/10_MYSENSORS_DEVICE.pm line 170, <$fh> line 2097.
Use of uninitialized value in anonymous hash ({}) at ./FHEM/10_MYSENSORS_DEVICE.pm line 170, <$fh> line 2097.
sieht nach nicht aktualisierter FHEM/lib/Device/MySensors/Constants.pm aus. Die Dateien in 'lib' kommen leider per update (noch nicht) mit.
Zitat von: fh168 am 26 Oktober 2014, 09:01:53
Kann man eigentlich das so programmieren, das bei Temperatur / Luftfeuchtigkeitssensoren in den Readings
state T: 12.6 H: 75 2014-10-26 19:14:51
herauskommt, damit man nur eine Zeile wegschreiben muss?
ja, kannst Du mit userReadings (http://fhem.de/commandref.html#userReadings) machen.
Hallo,
Habe mal ein Node mit 8 Relais gebastelt und eingebunden,
um nun die Relais zu schalten muss ich set Befehle senden,
Besteht die Möglichkeit dieses über webcmd zu schalten, oder muss ich dummys für jedes Relais anlegen.
Gruß
Stefan
so ich habe mal die usb/serielle Version an den Start gebracht :-)
define MYS_GW MYSENSORS /dev/ttyUSB1@115200
attr MYS_GW stateFormat connection
attr MYS_GW verbose 5
Logfile sagt:
2014.10.31 18:15:56 3: Opening MYS_GW device /dev/ttyUSB1
2014.10.31 18:15:56 3: Setting MYS_GW baudrate to 115200
2014.10.31 18:15:56 3: MYS_GW device opened
Also alles fein :D
Dann den 1. Sensor ins Spiel gebracht
define mys_Temperatur1 MYSENSORS_DEVICE 60
attr mys_Temperatur1 IODev MYS_GW
attr mys_Temperatur1 stateFormat V_TEMP
#attr mys_Temperatur1 subscribeReading_state MYSENSORS/60/0/V_TEMP
attr mys_Temperatur1 room MySensors-Test
attr mys_Temperatur1 verbose 5
bekomme aber keine Werte (Gegentest am MQTT Gateway alles io).
Was fehlt oder mache ich falsch?
Hallo Jens,
ich kann dir nur von mir berichten, ein State bekomme ich auch nicht.
Hast du denn den Sensor per autocreate anlegen lassen?
Also das GW mit inclusion 1 auf autocreate gesetzt ?
Gruß
Stefan
Nein, ich habe ihn per Hand angelegt.
Bekomme aber auf der Linux Console
2014.10.31 19:13:16 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=009(I_LOG_MESSAGE ) ack=0 'read: 60-60-0 s=0,c=1,t=0,pt=7,l=5:25.5'
2014.10.31 19:13:16 5: MYSENSORS gateway MYS_GW: read: 60-60-0 s=0,c=1,t=0,pt=7,l=5:25.5
2014.10.31 19:13:16 5: MYSENSORS Read: Rx: fr=060 ci=000 c=001(C_SET ) st=000(V_TEMP ) ack=0 '25.5'
2014.10.31 19:13:16 4: MYSENSORS_DEVICE mys_Temperatur1: ignoring C_SET-message no reading-mapping for childId 0, type temperature
2014.10.31 19:13:16 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=009(I_LOG_MESSAGE ) ack=0 'read: 60-60-0 s=1,c=1,t=0,pt=7,l=5:25.5'
2014.10.31 19:13:16 5: MYSENSORS gateway MYS_GW: read: 60-60-0 s=1,c=1,t=0,pt=7,l=5:25.5
2014.10.31 19:13:16 5: MYSENSORS Read: Rx: fr=060 ci=001 c=001(C_SET ) st=000(V_TEMP ) ack=0 '25.5'
2014.10.31 19:13:16 4: MYSENSORS_DEVICE mys_Temperatur1: ignoring C_SET-message no reading-mapping for childId 1, type temperature
2014.10.31 19:14:53 5: MYSENSORS/RAW: /0;0;3
2014.10.31 19:14:53 5: MYSENSORS/RAW: 0;0;3/;0;9;read: 60-60-0 s=1,c=1,t=0,pt=7,l=5:25.4
60;1;1;0;0;25.4
2014.10.31 19:14:53 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=009(I_LOG_MESSAGE ) ack=0 'read: 60-60-0 s=1,c=1,t=0,pt=7,l=5:25.4'
2014.10.31 19:14:53 5: MYSENSORS gateway MYS_GW: read: 60-60-0 s=1,c=1,t=0,pt=7,l=5:25.4
2014.10.31 19:14:53 5: MYSENSORS Read: Rx: fr=060 ci=001 c=001(C_SET ) st=000(V_TEMP ) ack=0 '25.4'
2014.10.31 19:14:53 4: MYSENSORS_DEVICE mys_Temperatur1: ignoring C_SET-message no reading-mapping for childId 1, type temperature
2014.10.31 19:15:25 5: MYSENSORS/RAW: /0;0;3;0;9;read
2014.10.31 19:15:25 5: MYSENSORS/RAW: 0;0;3;0;9;read/: 60-60-0 s=1,c=1,t=0,pt=7,l=5:25.5
60;1;1;0;0;25.5
Inclusion Mode am Gateway (Hardwareseitig hatte ich ausgeführt) aber automatisch im FHEM ist nichts passiert.
Muss man da für das Autocreate noch etwas setzen, es wurde noch nie was bei mir automatisch angelegt obwohl in der fhem.cfg
define autocreate autocreate
attr autocreate filelog ./log/%NAME-%Y.log
steht. Ich sehe gerade (nach Raspi-Neustart) kommen die Meldungen jetzt auch im FHE;-Log rein, aber der Wert wird trotzdem nicht angezeigt (siehe log 25.4 Grad)
Ich denke das es mit der Meldung
MYSENSORS_DEVICE mys_Temperatur1: ignoring C_SET-message no reading-mapping for childId 1, type temperature
zu tun hat, das ich noch was vergessen habe.
Gruß Jens
Sieht jetzt bei mir so aus.
Bei mir siehts so aus, mit Inclusion button gedrückt und dann auf Reset vom Sensor geklickt.
Die Readings haben sich selber erzeugt.
jupps, danke 8)
habe es jetzt hinbekommen, ich habe es jetzt nach "Stefan's" Vorschlag gemacht.
Aber mal eine ganz dumme Frage ::) wie kann man die per "autocreate" angelegten Devices in seine cfg übernehmen?
Zitat von: fh555 am 31 Oktober 2014, 20:07:38wie kann man die per "autocreate" angelegten Devices in seine cfg übernehmen?
im Webfrontend links oben auf 'Save config' klicken.
Zitat von: fh555 am 31 Oktober 2014, 20:07:38
wie kann man die per "autocreate" angelegten Devices in seine cfg übernehmen?
Speichern? ;)
@ntruchsess
Danke, hatte ich noch NIE genutzt.
@hexenmeister
Das war ja die Frage.
Ich hatte entweder immer Änderungen per ssh auf der Linux-Console direkt oder beim Webfrontend das
"save fhem.cfg" bzw. "save as" genutzt und da werden die Sachen von "autocreate" NICHT abgespeichert!
Gruß Jens
warum nicht einfach "save"? hat bei mir immer tadellos funktioniert.
und noch eine kleine Frage ???
Ich habe noch ein Problem mit der Zuordnung des invertierten Wertes.
Wie ihr ja auch schon probiert hattet, habe ich das Problem mit einen Schalter, welcher im Aus eine 1 und im Ein eine 0 liefert (Binary Switch).
Jetzt hatte ich lt. Forum und auch lt. Hilfe "Device specific help" folgendes Beispiel versucht.
attr <name> mapReadingType_<reading> <new reading name> [<value>:<mappedvalue>]*
configures reading type names that should be used instead of technical names
E.g.: attr xxx mapReadingType_LIGHT switch 0:on 1:off to be used for mysensor Variabletypes that have no predefined defaults (yet)
define MYSENSOR_10 MYSENSORS_DEVICE 10
attr MYSENSOR_10 IODev MYS_GW
attr MYSENSOR_10 devStateIcon .*:on .*:off
attr MYSENSOR_10 mapReadingType_tripped3 switch 0:on 1:off
attr MYSENSOR_10 mapReading_tripped3 3 tripped
attr MYSENSOR_10 mode node
attr MYSENSOR_10 room MySensors
attr MYSENSOR_10 stateFormat switch
attr MYSENSOR_10 version 1.4
im State steht aber nur "switch" und nicht der Wert "on" oder "off"
Was mache ich schon wieder falsch? :'(
Hallo,
Im Sketch kannst du angeben wann er eine 0 oder eine 1 annehmen soll.
Gruß
Stefan
#define Relay_on 0
#define Relay_off 1
Hi Stefan,
du meinst bestimmt ein Relay-Sketch (der kommt bei mir erst als nächstes), ich meinte aber den "normalen" "Funkschalter".
Wenn man halt in der Weboberfläche oder dann bei der Ausführung von Aktionen eine 1 (für Aus) sieht, denkt man im Normalfall, dass das Gerät (in meinen Fall der Schalter) betätigt ist, also EIN, was aber nicht stimmt. Deshalb würde ich es halt vorziehen auch bei einen normalen Schalter den Zustand "on" bzw. "off" zu sehen und mit diesen Variablen arbeiten, natürlich richtig zugeordnet 0:on und 1:off.
Gruß Jens
keiner eine Idee, oder geht es momentan nicht, weil es im MySensors-Modul nicht vorgesehen ist?
Gruß jens
attr MYSENSOR_10 mapReadingType_LIGHT switch 0:on 1:off
'LIGHT' bezieht sich auf die MySensors-konstante 'V_LIGHT' (siehe lib/Device/MySensors/Constants.pm (https://github.com/ntruchsess/fhem-mirror/blob/master/fhem/FHEM/lib/Device/MySensors/Constants.pm#L22)) ohne das Präfix 'V_'.
Damit kann man die Default-mappings (wie sie in der 10_MYSENSORS_DEVICE.pm (https://github.com/ntruchsess/fhem-mirror/blob/master/fhem/FHEM/10_MYSENSORS_DEVICE.pm#L111) vordefiniert sind) überschreiben.
Das Attribut ist zugegebenerweise nicht wirklich Endusertauglich, weil man sowohl die Konstantennamen als auch die möglichen Werte nur aus dem Sourcecode entnehmen kann. Dafür kann man allerdings auch in seinen Sketch schauen, die Konstantennamen sind da ja die gleichen.
Vieileicht ergänge ich ja an das mapReading_XXX-attribut noch um optionale Parameter um das Mapping direkt am Attribut vorzunehmen. Wäre vermutlich besser verständlich.
Gruß,
Norbert
Hallo ntruchsess,
wie kann ich es aber mit tripped machen? Geht es überhaupt?
In der https://github.com/ntruchsess/fhem-mirror/blob/master/fhem/FHEM/10_MYSENSORS_DEVICE.pm#L111 (https://github.com/ntruchsess/fhem-mirror/blob/master/fhem/FHEM/10_MYSENSORS_DEVICE.pm#L111)
Zeile 115
gibt es ja die variable V_LIGHT => { type => "switch", val => { 0 => 'off', 1 => 'on' }}
aber bei Zeile 134 nur V_TRIPPED => { type => "tripped" }
?
Gruß Jens
für 'tripped' ist mir kein sinnvolles mapping eingefallen. Was soll da hin? 'active','shutdown','armed','blown','enabled'... ?
den Default kannst du jedenfalls einfach überschreiben:
attr MYSENSOR_10 mapReadingType_TRIPPED tripped 0:hugo 1:helga
Hallo Norbert,
das Modul funktioniert bei mir jetzt relativ stabil. Vielen Dank fuer diese super Implementierung!!
Drei Dinge sind mir noch aufgefallen:
1) wenn ein MYSENSORS nicht connected ist, kann man es mit "delete gateway" nicht loeschen.
das braucht ich manchmal, wenn ich das gateway ein-/ausschalte, dann bekommt es ein anderes Device /dev/ttyUSB1 anstatt /dev/ttyUSB0.
dann bekomme ich das "alte" das mit /dev/ttyUSB0 arbeitet nicht geloescht. Anlegen des neuen mit /dev/ttyUSB1 funktioniert.
2) ich bekomme folgende Fehler: (Version fhem-code-6810-trunk)
Undefined subroutine &MYSENSORS::DEVICE::ReadingsVal called at ./FHEM/10_MYSENSORS_DEVICE.pm line 414.
3) Zum Thema Acknoledge - das funktioniert auch - ist der Node weg geht die Anzahl der outstandingAck hoch, sobald der Node wieder erreichbar ist, werden diese wieder abgarbeitet und gehen auf 1. Der einzige der stehenbleibt ist die Antwort vom I_CONFIG - Request.
014.10.25 20:28:09 5: MYSENSORS Read: Rx: fr=001 ci=255 c=003(C_INTERNAL ) st=006(I_CONFIG ) ack=1 'M'
2014.10.25 20:28:09 5: MYSENSORS send: Rx: fr=001 ci=255 c=003(C_INTERNAL ) st=006(I_CONFIG ) ack=1 'M'
siehe http://forum.fhem.de/index.php?action=post;quote=211622;topic=26807.165;last_msg=214847
... hoffentlich kommt das nicht zu meckerig rueber.
die Mysensors-fhem-module sind wirklich klasse, und machen sehr viel freude, da funktionier und gut zu bedienen :-)
viele gruesse
enrico
Hallo ntruchsess,
Zitat von: ntruchsess am 04 November 2014, 09:41:23
für 'tripped' ist mir kein sinnvolles mapping eingefallen. Was soll da hin? 'active','shutdown','armed','blown','enabled'... ?
den Default kannst du jedenfalls einfach überschreiben:
attr MYSENSOR_10 mapReadingType_TRIPPED tripped 0:hugo 1:helga
Warum nicht einfach "on" "off", wie du ja schon sagst, Überschreiben kann man es doch dann wie man will, wenn die Variable definiert ist.
Ich habe mal bei mir die MySensors_DEVICE.pm angepasst.
V_TRIPPED => { type => "tripped" , val => { 0 => 'on', 1 => 'off' }}
Jetzt geht es wie gewünscht :-)
Readings tripped3 off 2014-11-04 21:39:09
wird aber beim nächsten Update überschrieben :-(
Gruß Jens
updates:
- Mapping optional direkt am mapReading-attribut (http://sourceforge.net/p/fhem/code/6886/) überschreiben:
attr node mapReading_schalter 1 switch 0:on,1:off
- Funktion von attr requestAck (http://sourceforge.net/p/fhem/code/6887/) überarbeitet. Erhöht jetzt das Intervall mit jedem weiteren Zustellversuch, ignoriert Acknowledges von CONFIG-messages.
- Default-values 0:off,1:on für V_TRIPPED (http://sourceforge.net/p/fhem/code/6888/)
Gruß,
Norbert
Hallo,
ich kämpfe seit paar Tagen mit dem MySensors-Modul und FHEM. Ich habe den serial Gateway an den Raspi angeschlossen und einen Temp-Sensor per Funk verbunden.
Im Logfile von FHEM sehe ich auch die übertragene Temperatur aber ich bekomme die nicht ins FHEM angezeigt.
Auszug Log:
2014.11.05 22:12:41 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=009(I_LOG_MESSAGE ) ack=0 'read: 100-100-0 s=0,c=1,t=0,pt=7,l=5:21.4'
2014.11.05 22:12:41 5: MYSENSORS gateway MYS_GW: read: 100-100-0 s=0,c=1,t=0,pt=7,l=5:21.4
2014.11.05 22:12:41 5: MYSENSORS/RAW: 100;/0;1;0;0;21.4
2014.11.05 22:12:41 5: MYSENSORS Read: Rx: fr=100 ci=000 c=001(C_SET ) st=000(V_TEMP ) ack=0 '21.4'
2014.11.05 22:13:16 5: MYSENSORS/RAW: /0;0;3;0;9;read: 100-100-0 s=0,c=1,t=0,pt=7,l=
2014.11.05 22:13:16 5: MYSENSORS/RAW: 0;0;3;0;9;read: 100-100-0 s=0,c=1,t=0,pt=7,l=/5:21.5
100;0;1;0;0;21.5
Der Eintrag in die fhem.cfg sieht so aus:
define MYS_GW MYSENSORS /dev/ttyACM1@115200
attr MYS_GW stateFormat connection
attr MYS_GW verbose 5
define MYSENSOR_100 MYSENSORS_DEVICE 100
attr MYSENSOR_100 IODev MYS_GW
attr MYSENSOR_100 mode node
attr MYSENSOR_100 mapReading_temperature 0 temperature
attr MYSENSOR_100 version 1.4.1
Den Gateway habe ich eingefügt den Sensor "autocreate".
Nun möchte ich die Temp auf der Startseite angezeigt bekommen vlt. sogar in einem Plot.
Ich bekomms einfach nicht hin.
Ich benutze die aktuelle Version von MySensors 1.4 und auch die aktuelle Version vom MySensors.pm Modul.
Wo kann der Fehler liegen?
Vielen Denk schon im vorraus.
Viele Grüsse
Bobby
Hi Norbert,
danke, ihr habt bei der Umsetzung und Implentierung von MySensors wirklich eine super Arbeitet geleistet "Respekt" 8)
Gruß Jens
Zitat von: BobbyD am 05 November 2014, 22:21:12
Nun möchte ich die Temp auf der Startseite angezeigt bekommen
->
attr MYSENSOR_100 stateFormat temperature
Guten Morgen,
vielen Dank schon mal.
Ich habe das so eingetragen in die fhem.cfg. Jetzt steht in der Übersicht bei "MYSENSORS_DEVICE " und "MYSENSOR_100" das Wort "temperature" drin aber noch nicht der Wert ?
Bei der Variable "STATE" sind jetzt auch die Fragezeichen sind weg und dafür steht auch das Wort "temperature" drin.
Leider habe ich noch nicht herausbekommen wie man hier im Forum Bilder einfügt.
Irgendwie komm ich nicht so recht weiter.
Bobby
seit dem letzten Update von gestern funktioniert mein Feuchtigkeits / Temperatur humidity-Sensor nicht mehr. Gateway-Lan
seit gestern funktioniert bei mir mein Temperatursensor auch nicht mehr :(
Am Gateway kommt die Message rein, wird aber nicht verarbeitet.
Ich habe den Sensor heute nach dem heutigen Update noch einmal neu anlegen lassen aber das Problem besteht immernoch.
und das steht im log
2014.11.07 00:19:26 5: MYSENSORS/RAW: 0/;0;3;0;9;read: 60-60-0 s=0,c=1,t=0,pt=7,l=5:26.6
60;0;1;0;0;26.6
2014.11.07 00:19:26 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=009(I_LOG_MESSAGE ) ack=0 'read: 60-60-0 s=0,c=1,t=0,pt=7,l=5:26.6'
2014.11.07 00:19:26 5: MYSENSORS gateway MYS_GW: read: 60-60-0 s=0,c=1,t=0,pt=7,l=5:26.6
2014.11.07 00:19:26 5: MYSENSORS Read: Rx: fr=060 ci=000 c=001(C_SET ) st=000(V_TEMP ) ack=0 '26.6'
Das was also fehlt, ist der Reading Eintrag. Vielleicht ist das auch der Grund, warum "BobbyD" bald verzweifelt :-)
Gruß Jens
P.S.: Ein "set" oder eine Auswertung per "Alias" scheint auch nicht zu funktionieren, aber erst einmal eins nach den anderen ::)
Ich hab mir noch keinen Temperatursensor gebaut und konnte nur mit einem BinarySwichSensor testen. Der Unterschied ist, dass der definierte values (0 und 1) hat, die auch in den Typemappings drinstehen, ein Temperatursensor hat die nicht. Stell doch bitte mal 'attr MYSENSOR_60 verbose 5' an, damit man die Logausgaben des Devices selbst sieht.
Weil der reconnect mit dem EthernetGateway alles andere als zuverlässig war habe ich mich dem mal angenommen und den code dahingehend überarbeitet: EthernetGateway.ino (https://github.com/ntruchsess/MySensors/raw/ethernet_gw/libraries/MySensors/examples/EthernetGateway/EthernetGateway.ino)
Arbeitet jetzt so, dass beim Neu-verbinden die bisherige Verbindung sauber aufgeräumt wird. Funktioniert ab Arduino-IDE >= 1.0.6 bzw. 1.5.7. (Darunter fehlt die passende Implementierung des Operators '==' beim EthernetClient, ist ein Change, den ich vor ca. 6 Monaten mal zum Arduino-projekt contributed habe ;-)).
- Norbert
Hi ntruchsess,
das log bringt mit verbose 5 folgendes zu Tage:
2014.11.07 18:10:32 4: MYSENSORS_DEVICE MYSENSOR_60: ignoring C_SET-message not type-mapping for type V_TEMP
Es hat ja schon ein ganze Zeit funktioniert, erst als du die Sache mit Tripped eingefuegt hast (glaube ich), ging es nicht mehr.
Evtl. hast du ja zu diesen Zeitpunkt noch mehr geaendert?
Gruss Jens
danke für die Fehlermeldung, hilft mir weiter.
Ja klar habe ich da noch mehr geändert: man kann beim mapReading-attribut jetzt (optional) das value-mapping direkt überschreiben:
attr MYSENSORS_4711 mapReading_hugo 123 switch 0:paul 1:egon
für types ohne value-mapping (bei V_TEMP soll einfach nur der Wert unverändert durchgereicht werden) ist halt noch irgendwo der Wurm drin ;-)
ich habe immer noch seit dem Update Probleme mit dem Humidity sensor, da wird nix mehr erkannt.
CFGFN
DEF
127
IODev
im log steht aber alles
2014.11.07 21:24:18 5: MYSENSORS Read: Rx: fr=127 ci=255 c=003(C_INTERNAL ) st=011(I_SKETCH_NAME ) ack=0 'Humidity
2014.11.07 21:24:18 5: MYSENSORS Read: Rx: fr=127 ci=255 c=003(C_INTERNAL ) st=012(I_SKETCH_VERSION) ack=0 '1.0
2014.11.07 21:24:18 5: MYSENSORS Read: Rx: fr=127 ci=000 c=000(C_PRESENTATION) st=007(S_HUM ) ack=0 '1.4
2014.11.07 21:24:18 5: MYSENSORS Read: Rx: fr=127 ci=001 c=000(C_PRESENTATION) st=006(S_TEMP ) ack=0 '1.4
2014.11.07 21:24:19 5: MYSENSORS/RAW: /127;1;1;0;0;22.0
127;0;1;0;1;48.0
2014.11.07 21:24:19 5: MYSENSORS Read: Rx: fr=127 ci=001 c=001(C_SET ) st=000(V_TEMP ) ack=0 '22.0
2014.11.07 21:24:19 5: MYSENSORS Read: Rx: fr=127 ci=000 c=001(C_SET ) st=001(V_HUM ) ack=0 '48.0
2014.11.07 21:24:22 5: MYSENSORS outstanding ack, re-send: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=005(I_INCLUSION_MODE) ack=1 '1
2014.11.07 21:24:22 5: SW: 303b303b333b313b353b310a
2014.11.07 21:24:22 5: MYSENSORS/RAW: /0;0;3;0;5;1
2014.11.07 21:24:22 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=005(I_INCLUSION_MODE) ack=0 '1
2014.11.07 21:24:38 5: MYSENSORS outstanding ack, re-send: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=005(I_INCLUSION_MODE) ack=1 '1
2014.11.07 21:24:38 5: SW: 303b303b333b313b353b310a
2014.11.07 21:24:38 5: MYSENSORS/RAW: /0;0;3;0;5;1
2014.11.07 21:24:38 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=005(I_INCLUSION_MODE) ack=0 '1
2014.11.07 21:24:55 5: MYSENSORS outstanding ack, re-send: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=005(I_INCLUSION_MODE) ack=1 '1
2014.11.07 21:24:55 5: SW: 303b303b333b313b353b310a
2014.11.07 21:24:55 5: MYSENSORS/RAW: /0;0;3;0;5;1
gateway
I_SKETCH_NAME
Humidity
I_SKETCH_VERSION
1.0
NAME
MYSENSOR_127
NR
1480
STATE
???
TYPE
MYSENSORS_DEVICE
ack
0
protocol
1.4
radioId
127
repeater
0
Robin
so, hab mir grade einen TemperaturSensor zusammengesteckt und den Bug gefixed. Trat tatsächlich nur bei Sensortypen ohne explizites Werte-mapping auf. (http://sourceforge.net/p/fhem/code/6911/)
Danke supi, wann checkst du es über die fhep-update funktion ein? Hatte gerade mal geschaut, es war aber noch nicht aufgeführt.
List of new / modified files since last update:
UPD FHEM/37_harmony.pm
UPD FHEM/59_PROPLANTA.pm
UPD FHEM/59_Twilight.pm
UPD FHEM/98_RandomTimer.pm
UPD FHEM/98_WOL.pm
UPD docs/commandref.html
UPD docs/commandref_DE.html
Grusß Jens
Zitat von: fh555 am 07 November 2014, 23:28:41
wann checkst du es über die fhep-update funktion ein?
gar nicht, aus dem SVN kommt es mit etwas Verzögerung von selber im update an.
Supi, ist jetzt per update verfügbar, eingespielt und ging auf Anhieb 8)
Ich habe jetzt noch einen Bodenfeuchtesensor mit eingeklingt und funktioniert auch auf Anhieb.
Mal noch eine andere Frage ::)
Ist es möglich, daß das autocreate bei den MySensors Gateway die gefundenen Devices in eine andere Datei, als die fhem.cfg schreibt?
Ich habe der Übersichtlichkeit halber, meine Konfigurationsdateien ausgelagert und binde sie mit "include xxx" in der fhem.cfg ein.
include /opt/fhem/FHEM/fhem_interface.cfg
include /opt/fhem/FHEM/fhem_mysensors.cfg
include /opt/fhem/FHEM/fhem_lacrosse.cfg
include /opt/fhem/FHEM/fhem_it.cfg
und in der "fhem_mysensors.cfg" steht dann alles, was mit den MySensor-Devices zu tun hat.
define MYSENSOR_10 MYSENSORS_DEVICE 10
attr MYSENSOR_10 IODev MYS_GW
attr MYSENSOR_10 alias My_Switch
attr MYSENSOR_10 mapReading_tripped3 3 tripped 0:on 1:off
attr MYSENSOR_10 mode node
attr MYSENSOR_10 room MySensors
attr MYSENSOR_10 stateFormat tripped3
attr MYSENSOR_10 version 1.4
define MYSENSOR_30 MYSENSORS_DEVICE 30
attr MYSENSOR_30 IODev MYS_GW
attr MYSENSOR_30 alias My_Relais
attr MYSENSOR_30 mapReading_switch 1 switch
attr MYSENSOR_30 mode repeater
attr MYSENSOR_30 room MySensors
attr MYSENSOR_30 setReading_switch on,off
attr MYSENSOR_30 stateFormat switch
attr MYSENSOR_30 version 1.4b1 (18848a2)
usw
und in der "fhem_interfaces.cfg" steht zum Bsp.
###################################
## MySensors Gateway usb/seriell ##
###################################
define MYS_GW MYSENSORS /dev/ttyUSB1@115200
attr MYS_GW autocreate 1
attr MYS_GW icon cul_usb
attr MYS_GW room Gateway
attr MYS_GW stateFormat connection
attr MYS_GW verbose 5
Das autocreate ist aber auch "Global"? in der fhem.cfg aktiviert
define autocreate autocreate
attr autocreate autosave 1
attr autocreate device_room %TYPE
attr autocreate filelog ./log/%NAME-%Y.log
attr autocreate weblink 1
attr autocreate weblink_room Plots
Wenn also das neue MySensors Device per autocreate gefunden wurde, steht es ja unter "unsorted" und nach
"save config" steht es in der fhem.cfg.
Ich hätte aber lieber, wenn das was MySensors findet in der "fhem_mysensors.cfg" steht. Geht das?
nein, das musst Du dann von Hand in eigene Dateien splitten.
das autocreate werde ich vorraussichtlich noch so ändern, dass es das globale 'autocreate' (inklusive room etc.) berücksichtigt.
- Norbert
mhh, naja so mache ich das ja bisher. Ich dachte es geht einfacher ;)
Mal noch eine Frage ;)
Kann es sein, dass man bei MySensors nicht mit "alias" arbeiten kann?
Bsp.: welches funktioniert
define schalter1machwas notify MYSENSOR_40 { if (ReadingsVal("MYSENSOR_40","tripped","") eq "on") { fhem "set MYSENSOR_30 switch on" } else { fhem "set MYSENSOR_30 switch off" }}
und so geht es nicht
define My_Pir_Aktivitaet notify My_Pir { if (ReadingsVal("My_Pir","tripped","") eq "on") { fhem "set My_Relais switch on" } else { fhem "set My_Relais switch off" }}
definiert sind beide Teile, wie folgt
define MYSENSOR_30 MYSENSORS_DEVICE 30
attr MYSENSOR_30 IODev MYS_GW
attr MYSENSOR_30 alias My_Relais
attr MYSENSOR_30 mapReading_switch 1 switch
attr MYSENSOR_30 mode repeater
attr MYSENSOR_30 room MySensors
attr MYSENSOR_30 setReading_switch on,off
attr MYSENSOR_30 stateFormat switch
attr MYSENSOR_30 version 1.4b1 (18848a2)
define MYSENSOR_40 MYSENSORS_DEVICE 40
attr MYSENSOR_40 IODev MYS_GW
attr MYSENSOR_40 alias My_Pir
attr MYSENSOR_40 mapReading_tripped 1 tripped
attr MYSENSOR_40 mode node
attr MYSENSOR_40 room MySensors
attr MYSENSOR_40 stateFormat tripped
attr MYSENSOR_40 version 1.4b1 (18848a2)
gebe ich in der Befehlszeile in FHEM
set My_Relais switch on
kommt die Fehlermeldung:
Please define My_Relais first
ZitatKann es sein, dass man bei MySensors nicht mit "alias" arbeiten kann?
Das geht ja generell in FHEM nicht. Alias sind rein für die Anzeige da. ;)
Hi hexenmeister,
danke, das wußte ich nicht.
Temperaturmodul klappt immer noch nicht. Es wird zwar angelegt, jedoch keine Daten.
CFGFN
DEF
100
IODev
gateway
I_SKETCH_NAME
Temperature Sensor
I_SKETCH_VERSION
1.0
NAME
MYSENSOR_100
NR
4771
STATE
???
TYPE
MYSENSORS_DEVICE
ack
0
protocol
1.4
radioId
100
repeater
0
logfile alles tacco
2014.11.08 23:54:51 5: MYSENSORS/RAW: /100;0;1;0;0;26.8
2014.11.08 23:54:51 5: MYSENSORS Read: Rx: fr=100 ci=000 c=001(C_SET ) st=000(V_TEMP ) ack=0 '26.8
2014.11.08 23:55:23 5: MYSENSORS/RAW: /100;0;1;0;0;26.5
2014.11.08 23:55:23 5: MYSENSORS Read: Rx: fr=100 ci=000 c=001(C_SET ) st=000(V_TEMP ) ack=0 '26.5
2014.11.08 23:55:57 5: MYSENSORS/RAW: /100;0;1;0;0;26.2
2014.11.08 23:55:57 5: MYSENSORS Read: Rx: fr=100 ci=000 c=001(C_SET ) st=000(V_TEMP ) ack=0 '26.2
2014.11.08 23:56:32 5: MYSENSORS/RAW: /100;0;1;0;0;26.1
2014.11.08 23:56:32 5: MYSENSORS Read: Rx: fr=100 ci=000 c=001(C_SET ) st=000(V_TEMP ) ack=0 '26.1
2014.11.08 23:56:51 1: PERL WARNING: Useless use of private variable in void context at (eval 40992) line 1.
2014.11.08 23:56:51 1: PERL WARNING: Useless use of a constant (actual) in void context at (eval 40992) line 1.
2014.11.08 23:57:04 5: MYSENSORS/RAW: /100;0;1;0;0;25.9
2014.11.08 23:57:04 5: MYSENSORS Read: Rx: fr=100 ci=000 c=001(C_SET ) st=000(V_TEMP ) ack=0 '25.9
2014.11.08 23:57:38 5: MYSENSORS/RAW: /100;0;1;0;0;25.7
2014.11.08 23:57:38 5: MYSENSORS Read: Rx: fr=100 ci=000 c=001(C_SET ) st=000(V_TEMP ) ack=0 '25.7
2014.11.08 23:58:12 5: MYSENSORS/RAW: /100;0;1;0;0;25.6
2014.11.08 23:58:12 5: MYSENSORS Read: Rx: fr=100 ci=000 c=001(C_SET ) st=000(V_TEMP ) ack=0 '25.6
EDIT: Jetzt klappts.. inclusion-mode auf 1 und dann den Temperatur-Arduino resetten. Meiner Meinung nach ist die Inclusion-Zeit zu gering, weil der Temperatursensor nicht ständig sendet.
Hi,
I have an arduino pro mini with 3 temperature sensors connected to it. It's working fine and I can see the temperatures reaching both the serial gateway and Fhem. Problem is that Fhem only reads the sensor with the highest child ID for some reason.
I receive the following messages in the log:
2014.11.09 00:30:00 4: MYSENSORS_DEVICE Temp.VP: ignoring C_SET-message no reading-mapping for childId 0, type temperature
2014.11.09 00:30:00 4: MYSENSORS_DEVICE Temp.VP: ignoring C_SET-message no reading-mapping for childID 1, type temperature
The value from sensor with child ID 2 is logged and showed in the gui. If I remove map reading in config file for ChildID 2, values from ChildID 1 is logged instead. It's always only the sensor with the highest ChildID. I want to log values from all 3 ChildID's.
So am I missing something here or is this an unexpected behavior? :-\
My fhem.cfg file for this device looks like this: (created by the autoconfig)
define Temp.VP MYSENSORS_DEVICE 101
attr Temp.VP IODev gateway
attr Temp.VP mapReading_temperature 0 temperature
attr Temp.VP mapReading_temperature1 1 temperature
attr Temp.VP mapReading_temperature2 2 temperature
attr Temp.VP mode node
attr Temp.VP room L1
attr Temp.VP stateFormat temperature2
attr Temp.VP version 1.4
Thanks in advance!
Nach heutigem Update macht Fhem sowas
root@raspbmc:/opt/fhem# perl fhem.pl fhem.cfg
root@raspbmc:/opt/fhem# Use of uninitialized value in anonymous hash ({}) at ./FHEM/10_MYSENSORS_DEVICE.pm line 172, <$fh> line 2436.
Use of uninitialized value in anonymous hash ({}) at ./FHEM/10_MYSENSORS_DEVICE.pm line 172, <$fh> line 2436.
Use of uninitialized value in anonymous hash ({}) at ./FHEM/10_MYSENSORS_DEVICE.pm line 172, <$fh> line 2436.
Use of uninitialized value in anonymous hash ({}) at ./FHEM/10_MYSENSORS_DEVICE.pm line 172, <$fh> line 2438.
Use of uninitialized value in anonymous hash ({}) at ./FHEM/10_MYSENSORS_DEVICE.pm line 172, <$fh> line 2438.
Use of uninitialized value in anonymous hash ({}) at ./FHEM/10_MYSENSORS_DEVICE.pm line 172, <$fh> line 2438.
Broadcast message from root@raspbmc
(/dev/console) at 9:17 ...
The system is going down for reboot NOW!
Zitat von: fh168 am 09 November 2014, 09:19:54
Nach heutigem Update macht Fhem sowas
Use of uninitialized value in anonymous hash ({}) at ./FHEM/10_MYSENSORS_DEVICE.pm line 172, <$fh> line 2436.
Du musst die Dateien in FHEM/lib/Device/MySensors manuell (aus dem SVN) updaten, die kommen beim fhem-update (noch) nicht mit, das Direktory muss Rudolf König noch in den update-prozess mit aufnehmen.
Alternativ hier aus meinem git-repo:
Constants.pm (https://github.com/ntruchsess/fhem-mirror/raw/master/fhem/FHEM/lib/Device/MySensors/Constants.pm)
Message.pm (https://github.com/ntruchsess/fhem-mirror/raw/master/fhem/FHEM/lib/Device/MySensors/Message.pm)
Gruß,
Norbert
edit: habe Device/MySensors gerade in die contrib/fhemupdate.pl aufgenommen, ich hoffe damit kommen die Dateien in Zukunft beim update mit.
Der Fehler ist weg,
jedoch der hum sensor zeigt kein feuchtigkeitsreading an
EF
127
IODev
gateway
NAME
MYSENSOR_127
NR
1445
STATE
???
TYPE
MYSENSORS_DEVICE
ack
0
protocol
1.4
radioId
127
repeater
0
Readings
temperature1
23.0
2014-11-09 12:15:06
2014.11.09 12:15:09 5: MYSENSORS Read: Rx: fr=100 ci=255 c=003(C_INTERNAL ) st=011(I_SKETCH_NAME ) ack=0 'Temperature Sensor'
2014.11.09 12:15:09 5: MYSENSORS Read: Rx: fr=100 ci=255 c=003(C_INTERNAL ) st=012(I_SKETCH_VERSION) ack=0 '1.0'
2014.11.09 12:15:09 5: MYSENSORS Read: Rx: fr=100 ci=000 c=000(C_PRESENTATION) st=006(S_TEMP ) ack=0 '1.4'
2014.11.09 12:15:09 5: MYSENSORS/RAW: /100;0;1;0;0;23.3
2014.11.09 12:15:09 5: MYSENSORS Read: Rx: fr=100 ci=000 c=001(C_SET ) st=000(V_TEMP ) ack=0 '23.3'
2014.11.09 12:15:15 5: MYSENSORS/RAW: /0;0;3;0;5;0
2014.11.09 12:15:15 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=005(I_INCLUSION_MODE) ack=0 '0'
2014.11.09 12:15:22 1: PERL WARNING: Useless use of private variable in void context at (eval 163) line 1.
2014.11.09 12:15:22 1: PERL WARNING: Useless use of a constant (actual) in void context at (eval 163) line 1.
2014.11.09 12:15:23 1: PERL WARNING: Useless use of private variable in void context at (eval 164) line 1.
2014.11.09 12:15:23 1: PERL WARNING: Useless use of a constant (actual) in void context at (eval 164) line 1.
2014.11.09 12:17:31 1: PERL WARNING: Useless use of private variable in void context at (eval 189) line 1.
2014.11.09 12:17:31 1: PERL WARNING: Useless use of a constant (actual) in void context at (eval 189) line 1.
2014.11.09 12:19:37 5: MYSENSORS/RAW: /127;0;1;0;1;42.0
2014.11.09 12:19:37 5: MYSENSORS Read: Rx: fr=127 ci=000 c=001(C_SET ) st=001(V_HUM ) ack=0 '42.0'
2014.11.09 12:20:07 1: gateway is against deletion (connection: disconnected), continuing with rereadcfg anyway
2014.11.09 12:20:08 1: Including fhem.cfg
2014.11.09 12:20:15 1: Including ./log/fhem.save
2014.11.09 12:20:18 3: Opening gateway device 192.168.178.234:5003
2014.11.09 12:20:18 3: gateway device opened
2014.11.09 12:20:18 5: MYSENSORS send: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=002(I_VERSION ) ack=0 ''
2014.11.09 12:20:18 5: SW: 303b303b333b303b323b0a
2014.11.09 12:20:27 5: MYSENSORS/RAW: /0;0;3;0;14;Gateway startup complete.
0;0;3;0;2;1.4
2014.11.09 12:20:27 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=014(I_STARTUP_COMPLETE) ack=0 'Gateway startup complete.'
2014.11.09 12:20:28 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=002(I_VERSION ) ack=0 '1.4'
2014.11.09 12:20:31 1: PERL WARNING: Useless use of private variable in void context at (eval 248) line 1.
2014.11.09 12:20:31 1: PERL WARNING: Useless use of a constant (actual) in void context at (eval 248) line 1.
2014.11.09 12:23:15 1: PERL WARNING: Useless use of private variable in void context at (eval 301) line 1.
2014.11.09 12:23:15 1: PERL WARNING: Useless use of a constant (actual) in void context at (eval 301) line 1.
Zitat von: Aloha am 09 November 2014, 02:16:26
2014.11.09 00:30:00 4: MYSENSORS_DEVICE Temp.VP: ignoring C_SET-message no reading-mapping for childId 0, type temperature
2014.11.09 00:30:00 4: MYSENSORS_DEVICE Temp.VP: ignoring C_SET-message no reading-mapping for childID 1, type temperature
fixed in rev. 6923 (http://sourceforge.net/p/fhem/code/6923/). Sometimes a pair of parentheses makes a difference ;-)
- Norbert
Zitat von: ntruchsess am 09 November 2014, 12:46:15
fixed in rev. 6923 (http://sourceforge.net/p/fhem/code/6923/). Sometimes a pair of parentheses makes a difference ;-)
- Norbert
That was quick! I just tested it and it works very well now. :)
Thanks!
Zitat von: fh168 am 09 November 2014, 12:24:01
jedoch der hum sensor zeigt kein feuchtigkeitsreading an
NAME MYSENSOR_127
TYPE MYSENSORS_DEVICE
radioId
127Readings temperature
1 23.0
2014.11.09 12:19:37 5: MYSENSORS Read: Rx: fr=
127 ci=000 c=00
1(C_SET ) st=001(V_HUM ) ack=0 '42.0'
Lass die Devices noch mal sauber neu anlegen, für RadioId 127, ChildId 1 ist ja temperature und nicht humidity eingetragen. Oder korrigiere das manuell mit 'attr MYSENSOR_127 1 humidity'
Wenn das 'attr MYSENSOR_127 1 humidity' vom autocreate angelegt wurde, dann solltest Du auf SVN-Rev. 6923 updaten.
Übrigens: wenn Du einen Sensor neu flashst, dann bleibt die diesem Arduino schon mal zugewiesene RadioId im Eeprom erhalten.
Gruß,
Norbert
hat nichts gebracht, hab den hum noch mal von der config entfernt, ihn nochmal neu geflasht
und auch das snippet funktionierte nicht.
MYSENSOR_127: unknown attribute 1. Type 'attr MYSENSOR_127 ?' for a detailed list.
Since my temperature sensors are working fine now I continued with testing a power meter pulse sensor. It was not recognised automatically by the autoconfig so I tried to configure it manually.
Fhem gives the sensor an ID but nothing more. Before defining it manually I can see the following in the logs.
2014.11.09 12:25:32 3: MYSENSORS: ignoring req-msg from unknown radioId 102, childId 1 for V_VAR1
After defining the sensor and Fhem receives the first data from it, Fhem prints out the following error message to the console and then crashes. I have to turn off the sensor if I want to be able to start it again.
Undefined subroutine &MYSENSORS::DEVICE::ReadingsVal called at ./FHEM/10_MYSENSORS_DEVICE.pm line 428.
So, my question is if this type of sensor is supported yet?
Undefined subroutine &MYSENSORS::DEVICE::ReadingsVal called at ./FHEM/10_MYSENSORS_DEVICE.pm line 428.
-> fixed in rev. 6929 (http://sourceforge.net/p/fhem/code/6929/).
Zitat von: Aloha am 09 November 2014, 15:18:15
Since my temperature sensors are working fine now I continued with testing a power meter pulse sensor. It was not recognised automatically by the autoconfig[...]
could you update to latest svn, remove all attributes of MYSENSOR_102 leaving/setting 'attr MYSENSOR_102 verbose 5' and also attr verbose 5 on the MYSENSOR-gateway device and then redo the autocreate and post the output (everything that shows up after turning on the sensor?
EDIT: added fix for processing of request-msg: rev. 6931 (http://sourceforge.net/p/fhem/code/6929/). This is required for S_POWER-sensor
Did you change anything else? This time the autoconfig worked and the sensor was added. :)
There was a slight problem though. If I connect the sensor before enabling autoconfig Fherm crash with the following error message:
no reading-mapping for childId 1, type value1 at ./FHEM/10_MYSENSORS_DEVICE.pm line 530.
And the last thing the logs show:
2014.11.09 19:07:00 5: MYSENSORS gateway gateway: read: 102-102-0 s=1,c=0,t=13,pt=0,l=3:1.4
2014.11.09 19:07:00 5: MYSENSORS Read: Rx: fr=102 ci=001 c=000(C_PRESENTATION) st=013(S_POWER ) ack=0 '1.4'
2014.11.09 19:07:00 4: MYSENSORS_DEVICE node: errors on C_PRESENTATION-message for childId 1, subType S_POWER no mapReading for 1, power, no mapReading for 1, energy, no mapReading for 1, value1, no setReading for 1, value1
2014.11.09 19:07:00 5: MYSENSORS/RAW: 0;0;3;0;9;read: 102-1/02-0 s=1,c=2,t=24,pt=0,l=3:1.4
102;1;2;0;24;1.4
2014.11.09 19:07:00 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=009(I_LOG_MESSAGE ) ack=0 'read: 102-102-0 s=1,c=2,t=24,pt=0,l=3:1.4'
2014.11.09 19:07:00 5: MYSENSORS gateway gateway: read: 102-102-0 s=1,c=2,t=24,pt=0,l=3:1.4
2014.11.09 19:07:00 5: MYSENSORS Read: Rx: fr=102 ci=001 c=002(C_REQ ) st=024(V_VAR1 ) ack=0 '1.4'
/ Thomas
Thank's for reporting. I didn't build a sensor that uses C_REQ-message yet, so this is valueable for me.
Zitat von: Aloha am 09 November 2014, 19:22:31
Did you change anything else? This time the autoconfig worked and the sensor was added. :)
no nothing else changed. Seems the gateway didn't receive the presentation-messages while inclusion-mode was active.
Zitat von: Aloha am 09 November 2014, 19:22:31
no reading-mapping for childId 1, type value1 at ./FHEM/10_MYSENSORS_DEVICE.pm line 530.
-> fixed in rev. 6934 (http://sourceforge.net/p/fhem/code/6934/). (Now it's logged, not crashing).
Hallo Norbert,
hast du mal den 433MHzSensor aus der MySensor Library zusammengesteckt?
Klasse Sache, ich bekomme von meinem Nachbarn die Temperatur von dem 433 MHz Thermometer angezeigt.
Verdammt kalt geworden :-).
Wenn man eine Steckdosen-Baumarkt-Fernbedienung besitzt, kann man da auch die Codes herausbekommen.
Wäre schön wenn man das in Fhem auch sofort einbauen könnte :-)
Temperature: 10.4
Temperature: 10.4
Temperature: 10.4
Temperature: 10.4
Code: 6068, period: 324us.
Temperature: 10.4
Temperature: 10.4
Temperature: 10.4
Temperature: 10.4
Man sollte bei den 433 MHz - Receivern nicht die billigen kaufen, die funktionieren nur einige Meter. Ich habe das in meinem Blog damals nochmal erwähnt http://blog.moneybag.de/fhem-preiswerter-433-mhz-funkbewegungsmelder-pir/
LG
/robin
das ist ja nett, habe ich aber noch nicht mit gespielt ;-)
Hast Du Vorschläge, was man da wie 'integrieren' würde? (Also was soll fhem machen, wenn eine bestimmte Message reinkommt?)
Hallo Norbert,
logo habe ich das:
Vielleicht könnte man den Sketch erweitern das man auch noch 433 MHz senden kann..
Vorschläge:
Man könnte wie oben beschrieben die 433 MHz Thermometer empfangen, interessant, das es bei mir sofort geklappt hat.
Man könnte mit einer billig Baumarkt-Fernbedienung bspw. nicht nur Steckdosen schalten sondern auch eine Philips oder oder komplette Scenes an und ausschalten.
Man könnte die Daten von einem 433 MHz-Bewegungsmelder abfangen:
http://blog.moneybag.de/fhem-preiswerter-433-mhz-funkbewegungsmelder-pir/
Man könnte die DAetn von einem 433 MHz-Tür-Fensterkontakt abfangen:
http://blog.moneybag.de/tuer-fenster-kontakt-sensor-auf-433-mhz-basis/
Ich habe damals mal ein Video darüber gemacht, viele positive Reaktionen bekommen. Ich komme aber derzeitig noch nicht dazu, noch eins zu machen:
https://www.youtube.com/watch?v=sHT_ubQH4nk
Ich habe noch ein paar von den 433-MHz Emfänger, haben eine gute Reichweite.
Die einzelnen Module habe ich bei mir im Einsatz, auch Empfang über den Arduino. Im Grunde müsste man den Source-Code nur mit dem Mysensors-Code verbinden. ich bin aber nicht so da im Thema.
Das Senden geht von derzeitig noch über den Raspberry Pi ist aber auch kein Hexenwerk.
Wie gesagt im ersten Schritt könnte man die empfangenen Daten (Temperatur, Baumarkt-FB) in Fhem automatisch als Reading (?) anlegen lassen. Und die kann man ja wieder mit Fhem auslesen.
LG
/robin
jetzt habe ich mal einen Blick in den RF433MhzSensor.ino-sketch geworfen, der bei den MySensors-beispielen dabei ist.Der kommuniziert ja gar nicht über die MySensors-library, wieso haben die den überhaupt mit zu den Beispielen gepackt? Ich sehe keine sinnvolle Möglichkeit das in die MYSENSORS-module zu integrieren.
Zur Kommunikation mit 433MHz Geräten gibt es ja schon einige andere FHEM-Module mit anderer Basis.
schade, dann hätte ich wieder einen USB-Platz frei bekommen. Derzeitig nehme ich zum Empfang von 433 MHz Signalen einen Arduino Nano mit 433 Mhz-Empfänger.
Hallo,
ich habe mal wieder eine Frage (welche nicht expliziert mit MySensors zu tun hat) :
Man kann ja an ein Modul mehrere Sensoren anschließen aber wie bekommt man diese verschiedenen Sensoren für das entsprechende Modul grafisch in der Weboberfläche angezeigt?
Bsp.:
Modul_100
|
Switch_1 on
Switch_2 off
Temperature 25.0
Im Anhang mal die Konfiguration von einen Dual-Switch,
also ggf. 2 von diesen Lampen-Symbolen oder statt den Lampen-Symbol zwei Schalter oder on/off.
die Stichworte 'readingsProxy (http://fhem.de/commandref.html#readingsProxy)' bzw. 'readingsGroup (http://fhem.de/commandref.html#readingsGroup)' sollten Dir hier weierhelfen.
Hallo zusammmen
Ich scheitere bereits ganz am Anfang und benötige einen Schubser von euch ;)
Auf einen Arduino Uno mit Wiznet5100 habe ich mittels Arduino-Tool 1.58 den Example Sketch MySensors/Ethernet/ErthernetGateway geladen. Danach die Macadresse und die IP des Arduino angepasst:
#include <SPI.h>
#include <MySensor.h>
#include <MyGateway.h>
#include <stdarg.h>
// Use this fo WizNET module and Arduino Ethernet Shield
#include <Ethernet.h>
#define INCLUSION_MODE_TIME 1 // Number of minutes inclusion mode is enabled
#define INCLUSION_MODE_PIN 3 // Digital pin used for inclusion mode button
#define RADIO_CE_PIN 5 // radio chip enable
#define RADIO_SPI_SS_PIN 6 // radio SPI serial select
#define RADIO_ERROR_LED_PIN 7 // Error led pin
#define RADIO_RX_LED_PIN 8 // Receive led pin
#define RADIO_TX_LED_PIN 9 // the PCB, on board LED
#define IP_PORT 5003 // The port you want to open
IPAddress myIp (192, 168, 2, 104); // Configure your static ip-address here COMPILE ERROR HERE? Use Arduino IDE 1.5.7 or later!
// The MAC address can be anything you want but should be unique on your network.
// Newer boards have a MAC address printed on the underside of the PCB, which you can (optionally) use.
// Note that most of the Ardunio examples use "DEAD BEEF FEED" for the MAC address.
byte mac[] = { 0xDF, 0xDA, 0x51, 0x7C, 0x29, 0x85 }; // DEAD BEEF FEED
// a R/W server on the port
EthernetServer server = EthernetServer(IP_PORT);
// No blink or button functionality. Use the vanilla constructor.
MyGateway gw(RADIO_CE_PIN, RADIO_SPI_SS_PIN, INCLUSION_MODE_TIME);
// Uncomment this constructor if you have leds and include button attached to your gateway
//MyGateway gw(RADIO_CE_PIN, RADIO_SPI_SS_PIN, INCLUSION_MODE_TIME, INCLUSION_MODE_PIN, RADIO_RX_LED_PIN, RADIO_TX_LED_PIN, RADIO_ERROR_LED_PIN);
char inputString[MAX_RECEIVE_LENGTH] = ""; // A string to hold incoming commands from serial/ethernet interface
int inputPos = 0;
void setup()
{
// Initialize gateway at maximum PA level, channel 70 and callback for write operations
gw.begin(RF24_PA_LEVEL_GW, RF24_CHANNEL, RF24_DATARATE, writeEthernet);
Ethernet.begin(mac, myIp);
// give the Ethernet interface a second to initialize
delay(1000);
// start listening for clients
server.begin();
}
// This will be called when data should be written to ethernet
void writeEthernet(char *writeBuffer) {
server.write(writeBuffer);
}
void loop()
{
// if an incoming client connects, there will be
// bytes available to read via the client object
EthernetClient client = server.available();
if (client) {
// if got 1 or more bytes
if (client.available()) {
// read the bytes incoming from the client
char inChar = client.read();
if (inputPos<MAX_RECEIVE_LENGTH-1) {
// if newline then command is complete
if (inChar == '\n') {
// a command was issued by the client
// we will now try to send it to the actuator
inputString[inputPos] = 0;
// echo the string to the serial port
Serial.print(inputString);
gw.parseAndSend(inputString);
// clear the string:
inputPos = 0;
} else {
// add it to the inputString:
inputString[inputPos] = inChar;
inputPos++;
}
} else {
// Incoming message too long. Throw away
inputPos = 0;
}
}
}
gw.processRadioMessage();
}
Das Compilieren wie auch der Upload funktioniert problemlos und bekomme auch keine Fehlermeldungen. Wenn ich aber danach einen Ping absetze auf die IP des Arduino (192.168.2.104) bekomme ich keine Antwort.
Um sicherzustellen, dass die Hardware funktioniert, habe ich den Ethernet WebServer aus der Standard Liberary installiert (gleiche IP und gleiche MAC Adresse), danach hat der Arduino schön brav auf die Pings geantwortet.
Kann mir jemand einen Tipp geben?
Danke und Gruss Dani
schließ mal den Serial-monitor (115200 baud) an, und schau, ob der Sketch überhaupt sauber initialisiert. Wenn das nRF24L01-modul nicht korrekt verbunden ist, kommt da 'check wires', ansonsten sowas wir 'startup ok'
Hallo Norbert
Danke für den Tip! Im Serial Monitor kommt:
0;0;3;0;9;check wires
Ich habe noch kein nRF24L01 angeschlossen (Nur Ethernet und USB-Power). Könnte das der Grund sein, dass ich ihn nicht pingen kann?
Gruss Dani
ja
Hallo Norbert
Ich habe nun das nRF24L01 wie folgt angeschlossen:
GND GND
3.3V VCC
A2 MISO
A1 MOSI
A0 SCK
6 CSN
5 CE
Leider lässt sich der Arduino nach wie vor nicht pingen. Ich habe mal noch den MQTT-Gateway Sketch in der MySensors Library versucht, der funktioniert auf anhieb.
Hast du noch einen Tip wo ich suchen könnte?
Danke und Gruss Dani
Hallo,
wie kann man eigentlich einen Wert (ausser on,off) zum Sensor schicken?
Ich habe einen Aussensensor für Temp. und Feuchtigkeit und einen Innensensor auch mit Temperatur. Der Innensensor bekommt ein kl. Display.
Nun möchte ich auf den Display die Innentemp. und zusätzlich die Aussentemperatur/Feuchtigkeit anzeigen lassen.
Vielen Dank schon im vorraus.
BobbyD
Hallo zusammen
Ich bringe den Gateway einfach nicht zum rennen. Welchen Sketch verwendet ihr?
Für jeden Tipp bin ich dankbar.
Danke & Gruss Dani
Hallo Dani,
ich hatte Anfangs auch ähnliche Probleme wie Du, MQQT-Sketch funktioniert, der "normale" nicht.
Hier im Thread ein paar Seiten vorher gibt's einen, mit dem hat es dann funktioniert.
Es lief allerdings zuerst nicht zuverlässig (nach kurzer Zeit keine Funkverbindung), habe dann auf Soft-SPI umgestellt, jetzt läuft er seit 2 Tagen
hier meine überarbeitete Version, die keine Probleme mit mehrfachem Reconnect haben sollte: EthernetGateway.ino (https://github.com/ntruchsess/MySensors/raw/ethernet_gw/libraries/MySensors/examples/EthernetGateway/EthernetGateway.ino)
Zitat von: BobbyD am 15 November 2014, 12:10:13
wie kann man eigentlich einen Wert (ausser on,off) zum Sensor schicken?
Wenn man keinen der Standard-sketches verwendet, dann kennt das Modul keine sinnvollen Defaults. Kann man aber über die Attribute komplett selber konfigurieren. Um Werte an Aktoren zu schicken verwendet man die Attribute 'setCommands' und 'setReading' (http://fhem.de/commandref.html#MYSENSORS_DEVICE).
@ntruchsess
Zitat
die Stichworte 'readingsProxy' bzw. 'readingsGroup' sollten Dir hier weierhelfen.
define MYSENSOR_100 MYSENSORS_DEVICE 100
attr MYSENSOR_100 IODev MYS_GW
attr MYSENSOR_100 alias 100_My_Switch_2x
attr MYSENSOR_100 comment 3V CR2032 am 16.11.2014 / 20:00 Uhr
attr MYSENSOR_100 mapReading_tripped3 3 tripped 0:on 1:off
attr MYSENSOR_100 mapReading_tripped4 4 tripped 0:on 1:off
attr MYSENSOR_100 mode node
attr MYSENSOR_100 room MySensors
attr MYSENSOR_100 stateFormat tripped3 tripped4
attr MYSENSOR_100 version 1.4.1
meinst du so?
define MYSENSOR_100_GRP readingsGroup MYSENSOR_100:tripped3 MYSENSOR_100:tripped4
attr MYSENSOR_100_GRP room MySensors
Gruß Jens
P.S.: Ergebnis als Bild
@Jens, ich bin gespannt, wie lange die Knopfzelle hält :-)
@Robin,
ich auch :-)
Meine erste "Testzelle" war leider gebraucht, jetzt ist eine frische drinn. Ich muss nur noch den "BOD Level" anders setzen.
So wie es ausieht schaltet der Pro Mini 3V3@8Mhz bei 2V7 shon ab! Das ist natürlich nicht im Sinne des Erfinders ;)
Ich muß den erst einmal auf 1.8V runtersetzen oder ggf. gleich abstellen.
Hast du den Sketch mal probiert? soll jetzt der "Stromspar-Sketch" für die Schalter sein. Wäre ja cool, wenn der Verbrauch wirklich sehr niedrig ist. Somit könntest du z.Bsp. ein Doppelfenster getrennt mit nur einen Sender überwachen und das wäre natürlich auch preislich der Hammer im Gegensatz zu den "Fertigsensoren".
Gruß Jens
Mich würde mal interessieren wie ihr die Sensoren mi Batterie betreibt ?
Gibt ja verschiedene Ansätze, 1-2 Zellen und Step-Up Wandler, nach langem lesen denke ich eher 4 Zellen und den internen Spannungsregler vom Arduino Mini Pro nehmen ?
Bin gespannt was aus mysensors und FHEM wird, denke hier steckt viel Potential drin, endlich eine Alternative zum undurchsichtigen Homematic
Hallo Klaus,
es kommt drauf an welche Sensoren dran angeschlossen sind.
Ich experimentier gerade mit Tür-Fensterkontakt-Sensoren, und da nehme ich den Pro-Mini mit 3.3 Volt, weil er ja stromsparend sein soll und sonst nicht belastet wird.
Jens prüft ja gerade wie lang das Teil durchhält.
Für die Temperaturmessung nehme ich einen 3.3 V Pro Mini und einen DS18B20.
Eine andere Sache ist z.B. das Schalten von Relais, da würde ich einen Nano nehmen, wegen den notwendigen 5V Versorgungsspannung bei Relais und 3.3 V für den nRF.
Wichtig ist auch das das ganze stabil läuft. Sieht bei mir aber mittlerweile sehr gut aus. Ich teste schon 2 Wochen im Dauerbetrieb Gateway LAN, keine Abbrüche.. (wenn ich nicht dauernd basteln würde..)
robin
so mal ein kurzes Resümee zu meine "Dual-Switch" auf einen Arduino Pro Mini 3V3@8 Mhz ;)
Testhardware:
1x unveränderter MiniPro 3V3
1x CR2032 (3V, ca. 200mA)
1x NRF24L01+
2x Schalter
Software:
BinarySwitchSleepSensor
Ich wollte zwecks Planung der Batteriebetriebenen Sensoren mal sehen, wie es am sinnvollsten ist, diese Teile zu betreiben.
Verwendung von Batterien/Akkus (erst einmal ohne zusätzliche Step-Up Wandler) und dementsprechend auch die Größe des Gehäuses.
Naja eins ist schon einmal klar, mit einer Knopfzelle wird das leider nichts :(
Der MiniPro 3V3 zieht in "Ruhe" in diesen Testaufbau ca. 1,5 mA (Hardware unverändert), rechnerisch würde das theoretisch über 100 Stunden sein also, sagen wir mal ca. 4-5 Tage.
Naja lange ist das nicht, aber ..... der ProMini 3V3 ist per Fuses "Bodlevel" auf 2,7V eingestellt, also für diese Zwecke total unpraktisch, da der ProMini und der NRF24L01+ auch bis 2V noch funktionieren! In meinen Fall konnte ich also nur 0,3V verbrauchen,
bis die Abschaltung vom Controller kam >:(
Also die Fuses auf 1,8V abgeändert, aber bei mir gibt er trotzdem bei 2,7V den Geist auf.
Das heisst gerade einmal eine Laufzeit von ca. 24 Stunden!
Ich überlege mal, was mir noch so einfällt, was man machen könnte. Als nächstes wird wohl die Fehlersuche sein, warum er immer noch bei 2,7V abschaltet, dann ggf. die Hardwaremodifikation am ProMini.
Vernünftige und auch preiswerte Step-Up Wandler bei deutschen Lieferanten, welche ggf. Step-Up/-Down können, habe ich bisher leider nicht gefunden.
Ich bleibe auf jeden Fall am Ball ;D
Gruß Jens
Einen fertigen, guten und noch sparsamen StepUpDown wirst Du vermutlich nicht finden. Aber muss das unbedingt ein StepUpDown sein?
Allerdings einen fertigen und sparsamen StepUp habe ich auch nicht finden können. Ein guter Baustein ist max1724 daraus kann man einen sehr sparsamen selbst anfertigen. Ist jedoch nicht ganz trivial.
Hast Du LED heruntergelötet? Ansonsten ist der Verbrauch wirklich sehr hoch. Ich habe mal gemessen (http://s6z.de/cms/index.php/arduino/nuetzliches/9-winterschlaf-fuer-arduino (http://s6z.de/cms/index.php/arduino/nuetzliches/9-winterschlaf-fuer-arduino)), zwar nicht mit MySensors-Lib, aber man bekommt Arduino schon sehr sparsam. Allerdings gibt es auch widerspenstige Exemplare.
@hexenmeister
Zitat
Testhardware:
1x unveränderter MiniPro 3V3
1x CR2032 (3V, ca. 200mA)
1x NRF24L01+
2x Schalter
wie schon geschrieben, der MiniPro ist noch unverändert. Ich habe die LED noch "aktiv" und auch den internen Spannungswandler noch nicht getrennt. Ich denke mal LED=1mA und der nichtgenutzte Spannaungsregler in Ruhe evtl. =200 - 300uA.
Würde ich beides abziehen, komme ich theoretisch auf ca. 0,25mA - 0,5mA.
Da ich nur 2x 3V3 MiniPro's habe, wollte ich nicht gleich mit den Lötkolben und den Messer ran.
Das größere Problem, welches ich noch habe ist der BODLEVEL von 2,7V!
Angeblich sind sie jetzt auf 1,8V gesetzt aber er spinnt (stellt seine Arbeit ein) wenn ich an die 2,7V ran komme.
Wenn vermeidbar wollte ich die Schaltung nur mit 2xAA Batterien betreiben, direkt an den 3V3 Input-Pin also ohne Step-Up/-Down.
Zitat von: fh555 am 20 November 2014, 22:35:01
@hexenmeister
wie schon geschrieben, der MiniPro ist noch unverändert. Ich habe die LED noch "aktiv" und auch den internen Spannungswandler noch nicht getrennt. Ich denke mal LED=1mA und der nichtgenutzte Spannaungsregler in Ruhe evtl. =200 - 300uA.
Würde ich beides abziehen, komme ich theoretisch auf ca. 0,25mA - 0,5mA.
Habe beim schnellen Überfliegen wohl nicht wahrgenommen. Aber die Werte könnten passen (eigentlich hätte ich noch kleiner erwartet).
ZitatDa ich nur 2x 3V3 MiniPro's habe, wollte ich nicht gleich mit den Lötkolben und den Messer ran.
Die Power LED ist je entbehrlich. Kannst ja auch immer wieder einlöten (einfacher als LED ist ihre Vorwiderstand auszulöten).
Zitat
Das größere Problem, welches ich noch habe ist der BODLEVEL von 2,7V!
Angeblich sind sie jetzt auf 1,8V gesetzt aber er spinnt (stellt seine Arbeit ein) wenn ich an die 2,7V ran komme.
Hm... Das hat bei mir funktioniert. Ich habe eine Anleitung gefunden, wie man ein neues Board in der ArduinoIDE anlegt, mit einem gewünschten Level für BOD. Dann muss man nur aus der IDE den Botloader aufspielen.
ZitatWenn vermeidbar wollte ich die Schaltung nur mit 2xAA Batterien betreiben, direkt an den 3V3 Input-Pin also ohne Step-Up/-Down.
Müsste gehen.
@hexenmeister
Ich habe das mit den BOD wie folgt gemacht:
in der "boards.txt" einen neuen Controller angelegt (Eintrag vom MiniPro (3.3V, 8 MHz) w/ ATmega328 kopiert und als neuen MiniPro-BOD angelegt)
dann die "pro.menu.cpu.8MHzatmega328bod18.bootloader.extended_fuses=0x05" von 0x05 (2,7V) auf 0x06 (1,8V) abgeändert,
dann Bootlader neu auf den MiniPro übertragen,
dann über avrdude "read extended_fuses" ausgelesen, ausgelesener Wert= 0x06
Also hat es funktioniert, aber er macht bei mir bei 2,7V dicht :'(
Habe ich etwas vergessen oder falsch gemacht?
Mein schönes neues Breadboard scheint eine Macke zu haben >:(
Jetzt nach Austausch des Breadboards und Entfernung des Vorwiderstandes der Power-LED komme ich auf folgende Werte.
Ich denke, ich starte das Experiment mit einer neuer CR2032 noch einmal, da die Stromaufnahme ja jetzt "Himmlische Werte" hat.
Soooo, nun die neuen Werte ;D
Arduino ProMini 3V3@8Mhz, BOD 1,8V
Bootup = 18mA
switch 1 = 7,27mA (senden)
switch 2 = max 1mA (senden)
Sleep = 0,056 - 0,058 mA
Sketch = Dual-Switch-Stromspar
LG Jens
P.S.: Es stellt sich natürlich die Frage, warum beim Betätigen des "Switch-1" die Stromaufnahme um das 7fache höher ist!?!
Hätte auch eine Idee: Einfach eine kleine Solarzelle an den Akku klemmen. z.B. bei Lichtschaltern lädt gleich der Akku mit auf, wenn das Licht an ist. :-)
Zitat von: fh555 am 21 November 2014, 00:36:17
Mein schönes neues Breadboard scheint eine Macke zu haben >:(
Kenne ich ;)
Zitat
Ich denke, ich starte das Experiment mit einer neuer CR2032 noch einmal, da die Stromaufnahme ja jetzt "Himmlische Werte" hat.
...
Sleep = 0,056 - 0,058 mA
"Himmlisch" sind sie nicht, aber schon sehr-sehr gut. Der theoretische Minimum ist zwar noch drunter, aber richtig lohnen tun sich weitere Maßnahmen nicht ;)
ZitatP.S.: Es stellt sich natürlich die Frage, warum beim Betätigen des "Switch-1" die Stromaufnahme um das 7fache höher ist!?!
In der Tat sonderbar...
Was hat eigentlich mit dem BOD zunächst nicht funktioniert? Sieht ja richtig aus...
Bei den Switch muss ich auch noch einmal die Kontaktleiste tauschen, nicht das dort auch eine Macke ist!
Zitat von: hexenmeister am 21 November 2014, 08:28:16
Was hat eigentlich mit dem BOD zunächst nicht funktioniert? Sieht ja richtig aus...
Er hat, wenn ich unter 2,7V kam nur sehr langsam reagiert bzw. gar nicht mehr wirklich. Gesendet hat er auch nicht mehr!
Aber das konnte auch am fehlerhaften Breadboard gelegen haben.
Schaun ma mal, was der neue Test so bringt :-)
Hello!
Here's some more feedback. The latest sensor I'm trying to add is a water sensor. However, fhem crashes immediately when I power it up. It doesn't matter if the gateway is in inclusion mode or not. I've tried to increase the logging but it doesn't show too much. Here's what I got.
Error message sent to console when it crashes:
/opt/fhem $ no reading-mapping for childId 5, type value1 at ./FHEM/10_MYSENSORS_DEVICE.pm line 530.
Log from water meter when I turn it on until it crashes:
2014.11.21 21:02:04 5: MYSENSORS/RAW: 0;0;3;0;9/;read: 103-103-0 s=255,c=0,t=17,pt=0,l=3:1.4
1
2014.11.21 21:02:04 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=009(I_LOG_MESSAGE ) ack=0 'read: 103-103-0 s=255,c=0,t=17,pt=0,l=3:1.4'
2014.11.21 21:02:04 5: MYSENSORS gateway gateway: read: 103-103-0 s=255,c=0,t=17,pt=0,l=3:1.4
2014.11.21 21:02:04 5: MYSENSORS/RAW: 1/03;255;0;0;17;1.4
0;0;3;0;9;read: 103-103-0 s=255,c=3,t=6,pt=1,l=1
2014.11.21 21:02:04 5: MYSENSORS Read: Rx: fr=103 ci=255 c=000(C_PRESENTATION) st=017(S_ARDUINO_NODE ) ack=0 '1.4'
2014.11.21 21:02:04 5: MYSENSORS/RAW: 0;0;3;0;9;read: 103-103-0 s=255,c=3,t=6,pt=1,l=1/:0
103;255;3;0;6;0
2014.11.21 21:02:04 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=009(I_LOG_MESSAGE ) ack=0 'read: 103-103-0 s=255,c=3,t=6,pt=1,l=1:0'
2014.11.21 21:02:04 5: MYSENSORS gateway gateway: read: 103-103-0 s=255,c=3,t=6,pt=1,l=1:0
2014.11.21 21:02:04 5: MYSENSORS Read: Rx: fr=103 ci=255 c=003(C_INTERNAL ) st=006(I_CONFIG ) ack=0 '0'
2014.11.21 21:02:04 5: MYSENSORS send: Rx: fr=103 ci=255 c=003(C_INTERNAL ) st=006(I_CONFIG ) ack=0 'M'
[...]
2014.11.21 21:02:06 5: MYSENSORS Read: Rx: fr=103 ci=255 c=003(C_INTERNAL ) st=011(I_SKETCH_NAME ) ack=0 'Water Meter'
2014.11.21 21:02:06 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=009(I_LOG_MESSAGE ) ack=0 'read: 103-103-0 s=255,c=3,t=12,pt=0,l=3:1.0'
2014.11.21 21:02:06 5: MYSENSORS gateway gateway: read: 103-103-0 s=255,c=3,t=12,pt=0,l=3:1.0
2014.11.21 21:02:06 5: MYSENSORS/RAW: 103;255;3;0;12/;1.0
0;0;3;0;9;read: 103-103-0 s=5,c=0,t=21,pt=0,l=3:1.4
103;5;0;0;21;1.4
0;0;3;0;9;re
2014.11.21 21:02:06 5: MYSENSORS Read: Rx: fr=103 ci=255 c=003(C_INTERNAL ) st=012(I_SKETCH_VERSION) ack=0 '1.0'
2014.11.21 21:02:06 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=009(I_LOG_MESSAGE ) ack=0 'read: 103-103-0 s=5,c=0,t=21,pt=0,l=3:1.4'
2014.11.21 21:02:06 5: MYSENSORS gateway gateway: read: 103-103-0 s=5,c=0,t=21,pt=0,l=3:1.4
2014.11.21 21:02:06 5: MYSENSORS Read: Rx: fr=103 ci=005 c=000(C_PRESENTATION) st=021(S_WATER ) ack=0 '1.4'
2014.11.21 21:02:06 5: MYSENSORS/RAW: 0;0;3;0;9;re/ad: 103-103-0 s=5,c=2,t=24,pt=0,l=3:1.4
103;5;2;0;24;1.4
2014.11.21 21:02:06 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=009(I_LOG_MESSAGE ) ack=0 'read: 103-103-0 s=5,c=2,t=24,pt=0,l=3:1.4'
2014.11.21 21:02:06 5: MYSENSORS gateway gateway: read: 103-103-0 s=5,c=2,t=24,pt=0,l=3:1.4
2014.11.21 21:02:06 5: MYSENSORS Read: Rx: fr=103 ci=005 c=002(C_REQ ) st=024(V_VAR1 ) ack=0 '1.4'
Configuration for device 103 in fhem.cfg (added manually):
define Vatten MYSENSORS_DEVICE 103
attr Vatten IODev gateway
attr Vatten verbose 5
Cheers!
/ Thomas
Hallo an alle :-)
nur kurze Rückmeldung, mit den Dual-Switch und der Knopfzelle CR2032.
Start: 3,1V CR2032 am 21.11.2014 / 23:30 Uhr
Jetzt: 2,9V nach 8 Tagen
Bin mal gespannt, ob er immer noch die Probleme dann macht, wenn die Spannung an die 2,7V ran kommt.
Ich denke das ist dann evt. in 14 Tagen erreicht.
und dann willst alle 3 Wochen die Batterie wechseln ? :-) Ich versuchs grad mit 4 Batterien, Arduino Mini 3.3V mit dem integrierten Spannungsregler, hab jetzt seit 5 Tagen Batterie 102%, sollte ich wohl anpassen das es wenigstens unter 100% sind :-)
@Klaus0815
warum? Wenn ich jetzt davon ausgehe, das ich 200mV Spannungsabfall in 8 Tagen habe und wenn die Abschaltung jetzt bei 1,8V fehlerfrei funktioniert, komme ich optimistisch gesehen auf 2,5 - 3 Monate. Ist zwar noch nicht das wo ich hin will aber wenn das Gehäuse sehr klein ausfallen muß, hast du nicht wirklich alternativen, wo das Preis-/Leistungungsverhältnis noch stimmt.
Aber das ist ja auch nur erst einmal ein Testlauf ....
Momentan mache ich mir über Alternativen Gedanken, wo die Gehäusegröße keine Rolle spielt.
;D Ja und wenn ich eine Autobatterie daran hänge, dann komme ich auch ewig weit, wenn die Selbstentladung nicht wäre und die Gardienenstange die aushalten würde ::)
Bei den Test, welchen ich durchführen wollte, ging es darum, zu testen wie weit man die ganze Geschichte minimieren könnte und wie dann noch die Laufzeit ist, denn Theorie und Praxis sind zwei verschiedene paar Schuhe. ;D
Zitat von: Aloha am 21 November 2014, 21:07:52
/opt/fhem $ no reading-mapping for childId 5, type value1 at ./FHEM/10_MYSENSORS_DEVICE.pm line 530.
Zitat von: Aloha am 21 November 2014, 21:07:52
2014.11.21 21:02:06 5: MYSENSORS Read: Rx: fr=103 ci=005 c=000(C_PRESENTATION) st=021(S_WATER ) ack=0 '1.4'
[...]
2014.11.21 21:02:06 5: MYSENSORS Read: Rx: fr=103 ci=005 c=002(C_REQ ) st=024(V_VAR1 ) ack=0 '1.4'
Hi Thomas,
you seem to use an outdated version of the MySensors-module. Water-sensor is supported since Oct 25. 2014, the type of crash you see has been fixed by the commit of Nov 11. 2014 7:59pm.
regards,
Norbert
Hallo,
vermutlich habe ich etwas überlesen... aber ich kann nirgendwo den fehler finden warum meine MYSENSORS noden nicht aktualisiert werden, sie wurden hinzugefügt, senden fleißig das gateway empfängt aber die werte im FHEM bleiben gleich...
tja, solange Du uns nichts über die Config verrätst und ein aussagekräftiges log postest wird das vermutlich auch so bleiben...
Ok, ich benutze das ethernet gateway in der angepassten version was her gepostet wurde das keine probleme beim reconnect haben sollte.
die beiden sensoren sind DHT11 also feuchtigkeit temperatur.
wurden beide erkannt und als ID 20 und ID 100 angelegt.
im log ist leider nix zu sehen seid der autogenerierung ist auf dem log nix zu sehen
log: attr verbose an allen beteiligten devices auf 5.
config = fhem.cfg
danke für den tip.
da sind zwei sachen die sich mir nicht erschliessen, in der übersicht werden die Sensoren wie folgt angezeigt:
MYSENSORS_DEVICE
MYSENSOR_100
???
MYSENSOR_20
???
und lt dem log startet er alles liest die sensoren und nach ein paar mal ist dann einfach schluss...
2014.12.06 15:18:03 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=014(I_STARTUP_COMPLETE) ack=0 'Gateway startup complete.'
2014.12.06 15:18:03 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=002(I_VERSION ) ack=0 '1.4'
2014.12.06 15:18:07 5: MYSENSORS/RAW: /100;0;1;0;1;41.7
2014.12.06 15:18:07 5: MYSENSORS Read: Rx: fr=100 ci=000 c=001(C_SET ) st=001(V_HUM ) ack=0 '41.7'
2014.12.06 15:18:41 5: MYSENSORS/RAW: /100;0;1;0;1;42.0
2014.12.06 15:18:41 5: MYSENSORS Read: Rx: fr=100 ci=000 c=001(C_SET ) st=001(V_HUM ) ack=0 '42.0'
2014.12.06 15:19:00 5: MYSENSORS/RAW: /20;0;1;0;1;41.0
2014.12.06 15:19:00 5: MYSENSORS Read: Rx: fr=020 ci=000 c=001(C_SET ) st=001(V_HUM ) ack=0 '41.0'
ist die frage so dämlich das keiner antwortet? :-\
wenn Du mal die von mir angefragte config ( = fhem.cfg) posten würdest, dann könnte man Dir auch was qualifiziertes antworten.
sorry... das hab ich überlesen...
attr global userattr devStateIcon devStateStyle icon sortby webCmd widgetOverride
attr global autoload_undefined_devices 1
attr global logfile ./log/fhem-%Y-%m.log
attr global modpath .
attr global motd SecurityCheck:\
\
WEB,WEBphone,WEBtablet has no basicAuth attribute.\
telnetPort has no password/globalpassword attribute.\
\
Restart FHEM for a new check if the problem is fixed,\
or set the global attribute motd to none to supress this message.\
attr global statefile ./log/fhem.save
attr global updateInBackground 1
attr global verbose 5
define telnetPort telnet 7072 global
define WEB FHEMWEB 8083 global
define WEBphone FHEMWEB 8084 global
attr WEBphone stylesheetPrefix smallscreen
define WEBtablet FHEMWEB 8085 global
attr WEBtablet stylesheetPrefix touchpad
# Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog ./log/fhem-%Y-%m.log fakelog
define autocreate autocreate
attr autocreate filelog ./log/%NAME-%Y.log
define eventTypes eventTypes ./log/eventTypes.txt
# Disable this to avoid looking for new USB devices on startup
define initialUsbCheck notify global:INITIALIZED usb create
define gateway MYSENSORS 192.168.88.111:5003
attr gateway requestAck 1
attr gateway stateFormat connection
attr gateway verbose 5
define MYSENSOR_100 MYSENSORS_DEVICE 100
attr MYSENSOR_100 IODev gateway
attr MYSENSOR_100 mapReading_humidity 0 humidity
attr MYSENSOR_100 mapReading_temperature1 1 temperature
attr MYSENSOR_100 mode node
attr MYSENSOR_100 verbose 5
attr MYSENSOR_100 version 1.4
define MYSENSOR_20 MYSENSORS_DEVICE 20
attr MYSENSOR_20 IODev gateway
attr MYSENSOR_20 mapReading_humidity 0 humidity
attr MYSENSOR_20 mapReading_temperature1 1 temperature
attr MYSENSOR_20 mode node
attr MYSENSOR_20 verbose 5
attr MYSENSOR_20 version 1.4
define relay MYSENSORS_DEVICE 101
attr relay IODev gateway
attr relay setCommands on:switch_1:on off:switch_1:off
attr relay stateFormat switch_1
Deine config sieht soweit korrekt aus.
Wenn z.B. eine Message wie diese hier reinkommt:
2014.12.06 15:18:07 5: MYSENSORS/RAW: /100;0;1;0;1;41.7
2014.12.06 15:18:07 5: MYSENSORS Read: Rx: fr=100 ci=000 c=001(C_SET ) st=001(V_HUM ) ack=0 '41.7'
Dann sollte beim Device MYSENSOR_100 das Reading 'humidity' den Wert '41.7' annehmen. Das sieht man aber nicht in der Übersicht (dafür müsste man für das Device noch das 'stateFormat (http://fhem.de/commandref.html#stateFormat)'-Attribut passend definieren), sondern erst mal nur in den Device-details. Das Stateformat läßt sich beim Autocreate schlecht automatisch setzen, da die MySensors-nodes typischerweise ja mehrere Readings haben.
Gruß,
Norbert
das merkwürdige ist, das irgendwann unvermittelt das ganze stoppt und keine Aktualisierungen ,mehr gemacht werden, das Gateway liest immer noch die werte der Sensoren aber der log zeigt nix mehr an, und das ohne jede Fehlermeldung...
ich hab das jetzt fünf mal gelesen aber immer nich nicht verstanden, gibt es da eventuell irgendwo ein Beispiel?
"stateFormat
Ändert den Gerätestatus, dies ist z.Bsp. in der Ausgabe des list Kommandos zu sehen, oder in der Raumübersicht von FHEMWEB. Falls nicht gesetzt, dann wird das state Reading übernommen. Sonst werden alle Wörter im Wert des Attributes durch das entsprechende Reading des Gerätes ersetzt (soweit vorhanden). Falls der Wert in {} eingeschlossen ist, dann wird es als Perl Ausdruck ausgewertet. Die Auswertung passiert bei jeder Änderung eines Readings."
Zitat von: nicepix4u am 09 Dezember 2014, 19:40:24
das merkwürdige ist, das irgendwann unvermittelt das ganze stoppt und keine Aktualisierungen ,mehr gemacht werden, das Gateway liest immer noch die werte der Sensoren aber der log zeigt nix mehr an, und das ohne jede Fehlermeldung...
was passiert denn in der Situation, wenn Du einen der Sensoren durchstartest (fhem und gateway unverändert)?
nix, irgendwann stoppt FHEM mit dem update der sensoren. damit das wieder startet muss ich shutdown restart machen sensor aus gateway aus bringt alles nix, das trebit mich zum wahnsinn weil keine fehlermeldung kommt nix, einfach schluss
sieht immer etwas so aus:
2014.12.10 07:59:05 5: SW: 303b303b333b303b323b0a
2014.12.10 07:59:05 5: MYSENSORS/RAW: /0;0;3;0;2;1.4
2014.12.10 07:59:05 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=002(I_VERSION ) ack=0 '1.4'
2014.12.10 07:59:10 5: MYSENSORS/RAW: /100;0;1;0;1;29.3
2014.12.10 07:59:10 5: MYSENSORS Read: Rx: fr=100 ci=000 c=001(C_SET ) st=001(V_HUM ) ack=0 '29.3'
2014.12.10 07:59:18 5: MYSENSORS/RAW: /20;0;1;0;1;45.0
2014.12.10 07:59:18 5: MYSENSORS Read: Rx: fr=020 ci=000 c=001(C_SET ) st=001(V_HUM ) ack=0 '45.0'
2014.12.10 07:59:44 5: MYSENSORS/RAW: /100;0;1;0;1;29.0
2014.12.10 07:59:44 5: MYSENSORS Read: Rx: fr=100 ci=000 c=001(C_SET ) st=001(V_HUM ) ack=0 '29.0'
2014.12.10 08:00:18 5: MYSENSORS/RAW: /100;0;1;0;1;29.1
2014.12.10 08:00:18 5: MYSENSORS Read: Rx: fr=100 ci=000 c=001(C_SET ) st=001(V_HUM ) ack=0 '29.1'
Hängt Dein Gateway am Ethernet? Dann schließ doch parallel mal den Serial-monitor der Arduino-IDE an und schau, was das Gateway da sagt.
Ist jedenfalls so, dass solange die Verbindung zum Gateway noch steht die komplette Kommunikation der Sensorwerte vom Gateway ausgeht, FHEM empfängt dann nur - d.h. das FHEM-modul wird keine Fehlermeldung oder ähnliches ausgeben, wenn das Gateway einfach nix mehr empfängt, sondern einfach recht still werden.
Im MySensors-forum gibt's mehrere Threads wo Leute Probleme mit dem Zusammenspiel von Ethernet-modul und nRF24L01 haben.
Welcher Sketch genau läuft denn auf dem GateWay?
den seriellen monitopr hab ich immer an, das gateway empfängt ganz normal die werte nur das fhem nimt sie nicht mehr auf, ich werde morgen mal das serielle Gateway ausprobieren, ich hb den sketch drauf der hier in Thread veröffentlicht wurde mit verbessertem reconnect
Hallo Thomas,
wieviele (unterschiedliche) Sensoren hast du denn am Gateway angeschlossen?
Wird die Übertragung zu Fhem bei allen Sensoren gestoppt?
Mein Gateway läuft bei mir mit einem TFK-Sensor mittlerweile einwandfrei. Bei meiner letzten Version hat es wohl an der Batteriespannung gehakt, die war wohl nicht konstant. Probleme habe ich immer noch mit dem "Anlernen" von neuen Sensoren. Dann mache ich kurz einen Reset am Gateway, schalte den Inclusion-Modus ein und dann werden die in Fhem per autocreate aufgenommen. Klappt aber nicht immer, sondern muss den Vorgang öfter wiederholen. Aber wenn sie drin sind, funktionieren sie tadellos. Ich teste hier sporadisch mit Temperatursensoren DS18B20, Relay, Humidity, Distance und DoorWindow (Sleep)-Button.
Die im MySensors-Forum beschriebenen Netzprobleme (LAN) kann ich nicht (mehr) bestätigen seitdem ich die Büchse ordentlich zusammengelötet habe. Ich habe derzeitig den original Sketch drauf.
http://blog.moneybag.de/fhem-sensoren-an-fhem-mit-nrf24l01-transceiver/
LG
/robin
ich benötige noch ein paar zuverlässige Fenster und Tür Sensoren. Ich habe mir ein seriell Gateway und ein Door Window und Push Button Sensor zusammen gebaut. Trotzdem ich requestAck eingestellt habe wird das ein oder andere schalten nicht angezeigt. Muß da noch etwas an dem Beispiel sketch geändert werden damit der ack Mechanismus funktioniert ?
Hallo Thorsten,
ich habe den BinarySwitchButton-Sleep Sketch drauf, funktioniert bisher einwandfrei. Liegt es am Reed-Kontakt? Wird das Signal nicht zum Gateway übertragen?
LG
/robin
Hallo Robin,
der Betrag auf dem Blog bezieht sich auf das MQTT Gateway, ich benutze das normal Ethernet gateway, um die MQTT Brocker aus dem weg zugehen, oder benutzt du das auch Ohne MQTT ?
Gruß
Thomas
Hallo,
ich möchte von meinem Sensor einen "eigenen" Wert an FHEM übertragen. Im Logfile von FHEM kommt der auch an aber ich bekomme den nicht als Reading eingetragen.
2014.12.14 10:40:00 5: MYSENSORS gateway MYS_GW: read: 101-101-0 s=5,c=1,t=24,pt=7,l=5:814
2014.12.14 10:40:00 5: MYSENSORS/RAW: /101;5;1;0;24;814
2014.12.14 10:40:00 5: MYSENSORS Read: Rx: fr=101 ci=005 c=001(C_SET ) st=024(V_VAR1 ) ack=0 '814'
2014.12.14 10:40:00 4: MYSENSORS_DEVICE MYSENSOR_101: ignoring C_SET-message no reading-mapping for childId 5, type value1
Es handelt sich dabei um eine Akku-Spannung. Ich möchte nicht nur den Akku-Level sonder auch die Spannung wissen.
Wie kann ich den mir als Reading einbinden?
Vielen Dank
Bobby
Hallo!
Folgendes Problem:
Habe ein serielles Gateway an Fhem. Jetzt habe ich schon erfolgreich den RelayActuator umgesetzt und in Fhem eingebunden.
Nächster Schritt soll der RelayWithButtonActuator Code sein. Relais ist auf Port 3 des Arduinos.
Leider macht das Relais kein Mucks, obwohl das beim RelayActuator-Code noch funktioniert hat.
Die serielle Ausgabe vom RelayWithButtonActuator Code lautet:
Zitatread: 0-0-100 s=1,c=1,t=2,pt=0,l=1:1
read: 0-0-100 s=1,c=1,t=2,pt=0,l=1:0
read: 0-0-100 s=1,c=1,t=2,pt=0,l=1:1
wenn ich ein-aus-ein auf der Fhem-Konsole drücke. Eigentlich sollte das doch funktionieren, oder? Aber das Relais bewegt sich nicht...????
Was mache ich falsch???
Eingebunden ist es wie folgt:
define MYSENSOR_100 MYSENSORS_DEVICE 100
attr MYSENSOR_100 IODev gateway
attr MYSENSOR_100 mapReading_switch1 1 switch
attr MYSENSOR_100 mode repeater
attr MYSENSOR_100 setReading_switch1 on,off
attr MYSENSOR_100 version 1.4.1
attr MYSENSOR_100 setCommands on:switch1:on off:switch1:off
Nachtrag: Den Code vom Git genommen - jetzt funzt es.
https://github.com/mysensors/Arduino/blob/master/libraries/MySensors/examples/RelayWithButtonActuator/RelayWithButtonActuator.ino
jetzt habe ich bei einem Update von gestern auf zwei meiner Testmaschinen (Raspberry Pi) den gleichen Fehler.
014-12-23 21:55:42 Global global UPD FHEM/lib/Device/MySensors/Constants.pm
2014-12-23 21:55:42 Global global mv ./FHEM/lib/Device/MySensors/Constants.pm ./restoreDir/2014-12-23/FHEM/lib/Device/MySensors/Constants.pm failed:Permission denied, aborting the update
irgend jemand eine Idee?
LG
/robin
Hallo Robin,
Schau dir mal die Rechte der Datei an.
Gruß Stefan
Gesendet von meinem iPad mit Tapatalk HD
Root, owner auch root.
Die Rechte habe ich auch schon geändert auf 644, hat nix gebracht.
Ein mv durch owner fhem kommt einem schreiben und löschen gleich, was dem User fhem für eine Datei des users Root mit 644 nicht erlaubt ist.
Gib ihr doch mal 655 oder 777 ;-)
Lg
Stefan
Hab ich gestern auch gemacht für beide Dateien im lib,
Danach konnte das Update die beiden Dateien moven und die neuen schreiben.
Cu
777
UPD FHEM/lib/Device/MySensors/Constants.pm
mv ./FHEM/lib/Device/MySensors/Constants.pm ./restoreDir/2014-12-23/FHEM/lib/Device/MySensors/Constants.pm failed:Permission denied, aborting the update
Lösche doch beide einfach weg, dann hätte er auch nix zum mv.
hatte ich auch schon mal gemacht...
UPD FHEM/lib/Device/MySensors/Constants.pm
open ./FHEM/lib/Device/MySensors/Constants.pm failed: Permission denied, trying to restore the previous version and aborting the update
Ich hab gestern wegen dem HueModul Änderungen auch noch ein update Force gemacht.
update force macht er auch nicht, bleibt an der gleichen stelle hängen
Zitat von: fh168 am 23 Dezember 2014, 22:38:27
hatte ich auch schon mal gemacht...
UPD FHEM/lib/Device/MySensors/Constants.pm
open ./FHEM/lib/Device/MySensors/Constants.pm failed: Permission denied, trying to restore the previous version and aborting the update
Ach ja das Verzeichnis MySensors muss auch für den User fhem beschreibbar sein
und wie sagt man das dem System?
klappt! mc sei dank!
Und Dir auch vielen Dank!
chmod 655 /FHEM/lib/Device/MySensors
läuft!
bei hue was neues? ... ok andere Baustelle. hue hab ich auch.
Ja die subtypes der Devices wurde erweitert, hue Lampen sind jetzt als extcolordimmer definiert. usw.
Lg
schaue ich mir mal an
mehr zu den hue updates findest du hier:
http://forum.fhem.de/index.php/topic,11020.msg233471.html#msg233471 (http://forum.fhem.de/index.php/topic,11020.msg233471.html#msg233471)
http://forum.fhem.de/index.php/topic,11020.msg233648.html#msg233648 (http://forum.fhem.de/index.php/topic,11020.msg233648.html#msg233648)
http://forum.fhem.de/index.php/topic,30895.msg234449.html#msg234449 (http://forum.fhem.de/index.php/topic,30895.msg234449.html#msg234449)
gruss
andre
Ich bekomme keinen MySensor Client mehr gepairt?
Vorgehensweise:
1. inclusion-mode on
2. MySensor Client an Strom anschliessen
Nichts passiert. Meine drei anderen Clients gingen vor 1-2 Wochen ohne Problem zum Pairen... und laufen auch heute noch.
Gibt es eine Möglichkeit die Funktion des Gateways zu überprüfen?
Ich habe es folgendermaßen angelegt:
define gateway MYSENSORS /dev/ttyAMA0@115200
und im Log erhalte ich nur folgende Meldungen:
2015.03.05 16:31:38 3: Opening gateway device /dev/ttyAMA0
2015.03.05 16:31:39 3: Setting gateway baudrate to 115200
2015.03.05 16:31:39 3: gateway device opened
2015.03.05 16:31:39 1: usb create starting
2015.03.05 16:31:40 3: Probing TCM_ESP3 device /dev/ttyUSB0
2015.03.05 16:31:41 3: Probing TCM_ESP2 device /dev/ttyUSB0
2015.03.05 16:31:41 3: Probing FHZ device /dev/ttyUSB0
2015.03.05 16:31:41 3: Probing TRX device /dev/ttyUSB0
2015.03.05 16:31:42 3: Probing ZWDongle device /dev/ttyUSB0
2015.03.05 16:31:42 3: Probing FRM device /dev/ttyUSB0
2015.03.05 16:31:47 1: usb create end
Hi gloob,
am schnellsten geht es, wenn du auf dein Device (Gateway) gehst und "set inclusion-mode" auslöst.
Dann sollten die LEDs blinken (sofern du die beschaltet hast), kannst auch den loglevel auf 5 setzen und schauen was passiert.
Gruß Jens
Vielen Dank für die Info.
Scheinbar kommen schon ein paar Daten vom Sensor an.
2015.03.05 17:20:16 5: MYSENSORS/RAW: /0;0;3;0;9;r
2015.03.05 17:20:16 5: MYSENSORS/RAW: 0;0;3;0;9;r/ead: 222-222-0 s=0,c=1,t=23,pt=2,l=2:56
222;0
2015.03.05 17:20:16 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=009(I_LOG_MESSAGE ) ack=0 'read: 222-222-0 s=0,c=1,t=23,pt=2,l=2:56'
2015.03.05 17:20:16 5: MYSENSORS gateway gateway: read: 222-222-0 s=0,c=1,t=23,pt=2,l=2:56
2015.03.05 17:20:16 5: MYSENSORS/RAW: 222;0/;1;0;23;56
2015.03.05 17:20:16 5: MYSENSORS Read: Rx: fr=222 ci=000 c=001(C_SET ) st=023(V_LIGHT_LEVEL ) ack=0 '56'
2015.03.05 17:20:16 3: MYSENSORS: ignoring set-msg from unknown radioId 222, childId 0 for V_LIGHT_LEVEL
Hast du vielleicht noch einen Tipp für mich wie ich mir den Wert in einem Raum anzeigen lassen kann?
Vielen Dank für die Unterstützung eines Neulings :)
Gruß
Stefan
Edit: Hab es mit ein bisschen Google und einer readingsGroup hinbekommen. Vielen Dank für die Hilfe trotzdem.
Hi gloob,
wenn du noch eine Frage hast, kann ich sie dir gerne heute (Freitag) so gegen 15:00 Uhr beantworten (soweit ich die Anwort weiß) ;D
Gruß Jens
Zitat von: ntruchsess am 16 November 2014, 21:14:10
Wenn man keinen der Standard-sketches verwendet, dann kennt das Modul keine sinnvollen Defaults. Kann man aber über die Attribute komplett selber konfigurieren. Um Werte an Aktoren zu schicken verwendet man die Attribute 'setCommands' und 'setReading' (http://fhem.de/commandref.html#MYSENSORS_DEVICE).
Gibt es hier schon weitere Erkenntnisse?
Ich würde auch gerne Werte an einen Node schicken und diese per LCD darstellen (Verschiedene Temperaturen etc.)
Hallo Zusammen. :)
Ich habe mich nun auch mit den MySensors beschäftigt und heute Nachmittag das Serial Gateway und einen Temperatur Node zum Test aufgebaut. Leider bekomme ich es nicht hin, dass die Node per AutoCreate in Fhem angelegt wird. Ich kann mir leider auch nicht erklären woran es liegt, weil sowohl das Gateway als auch die Node vernünftig über den Serial Monitor Daten ausgeben.
Serial Gateway über Serial Monitor:
0;0;3;0;14;Gateway startup complete.
0;0;3;0;9;read: 0-0-0 s=255,c=0,t=17,pt=0,l=5:1.4.1
0;255;0;0;17;1.4.1
0;0;3;0;9;read: 0-0-0 s=255,c=3,t=6,pt=1,l=1:0
0;0;3;0;9;read: 0-0-0 s=255,c=3,t=11,pt=0,l=18:Temperature Sensor
0;0;3;0;9;read: 0-0-0 s=255,c=3,t=12,pt=0,l=3:1.0
0;0;3;0;9;read: 0-0-0 s=0,c=0,t=6,pt=0,l=5:1.4.1
0;0;0;0;6;1.4.1
0;0;3;0;9;read: 0-0-0 s=0,c=1,t=0,pt=7,l=5:74.8
0;0;1;0;0;74.8
Node über Serial Monitor:
sensor started, id 0
send: 0-0-0-0 s=255,c=0,t=17,pt=0,l=5,st=ok:1.4.1
send: 0-0-0-0 s=255,c=3,t=6,pt=1,l=1,st=ok:0
send: 0-0-0-0 s=255,c=3,t=11,pt=0,l=18,st=ok:Temperature Sensor
send: 0-0-0-0 s=255,c=3,t=12,pt=0,l=3,st=ok:1.0
send: 0-0-0-0 s=0,c=0,t=6,pt=0,l=5,st=ok:1.4.1
send: 0-0-0-0 s=0,c=1,t=0,pt=7,l=5,st=ok:75.0
Alleine die ID der Node stört mich... Das Gateway ist folgendermaßen in Fhem definiert:
define MySensors MYSENSORS /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A504800O-if00-port0
attr MySensors autocreate 1
attr MySensors group Gateways
attr MySensors icon cul_usb
attr MySensors requestAck 1
attr MySensors room System
attr MySensors stateFormat connection
attr MySensors verbose 5
Fhem empfängt das Folgende, wenn die Node sendet:
2015.03.17 18:58:57 1: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A504800O-if00-port0 disconnected, waiting to reappear (MySensors)
2015.03.17 19:11:36 1: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A504800O-if00-port0 reappeared (MySensors)
2015.03.17 19:11:36 5: MYSENSORS send: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=002(I_VERSION ) ack=0 ''
2015.03.17 19:11:36 5: SW: 303b303b333b303b323b0a
2015.03.17 19:11:37 5: MYSENSORS/RAW: /�
2015.03.17 19:12:15 5: MYSENSORS/RAW: �/�
2015.03.17 19:12:15 5: MYSENSORS/RAW: ��/�
2015.03.17 19:12:17 5: MYSENSORS/RAW: ���/����
2015.03.17 19:12:17 5: MYSENSORS/RAW: �������/�
2015.03.17 19:12:28 5: MYSENSORS/RAW: ��������/�
2015.03.17 19:12:28 5: MYSENSORS/RAW: ���������/�
2015.03.17 19:12:30 5: MYSENSORS/RAW: ����������/�
2015.03.17 19:12:30 5: MYSENSORS/RAW: �����������/�
2015.03.17 19:12:30 5: MYSENSORS/RAW: ������������/�
2015.03.17 19:12:30 5: MYSENSORS/RAW: �������������/�
2015.03.17 19:12:31 5: MYSENSORS/RAW: ��������������/�
Folgendes über Fhem mit Inclusion Mode über das Web Interface:
2015.03.17 19:24:49 5: MYSENSORS send: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=005(I_INCLUSION_MODE) ack=0 '1'
2015.03.17 19:24:49 5: SW: 303b303b333b303b353b310a
2015.03.17 19:24:53 5: MYSENSORS/RAW: ������������ర�5���ߠ������/�
2015.03.17 19:24:53 5: MYSENSORS/RAW: ������������ర�5���ߠ�������/�
2015.03.17 19:24:55 5: MYSENSORS/RAW: ������������ర�5���ߠ��������/�
2015.03.17 19:24:55 5: MYSENSORS/RAW: ������������ర�5���ߠ���������/�
2015.03.17 19:24:55 5: MYSENSORS/RAW: ������������ర�5���ߠ����������/�
2015.03.17 19:24:56 5: MYSENSORS/RAW: ������������ర�5���ߠ�����������/�
Möglicherweise nutze ich auch den falschen Sketch für das Gateway. Welchen nutzt ihr? Wäre toll, wenn mir jemand helfen könnte.
Sketch ist bestimmt in Ordnung. Die Rate vermuttlich nicht. Füge @115200 zu der Gateway-Definition.
Danke für deine Hilfe! Du hattest Recht. :)
Nun wird mir die Temperatur angezeigt, allerdings in Fahrenheit. Lässt sich das beheben?
Ich habe auch noch eine Frage zum Sketch. Ich nutze den normalen Sketch von hier:
http://www.mysensors.org/build/serial_gateway (http://www.mysensors.org/build/serial_gateway)
Muss ich diese Änderung im Sketch vornehmen?
// To start gateway with include button and led blinking functionality use this constructor
Gateway gw(9, 10, INCLUSION_MODE_TIME, INCLUSION_MODE_PIN, 6, 5, 4);
Kommt mir bekannt vor...
Ich meine, beim Include fragt der Sensor auch nach dem gewünschten Format (metric oder imperial) und speichert im EEPROM. Mit Gateway-Sketch hat das wenig zu tun. Ich weiß nicht mehr genau, wie das gesteuert wird. Du kannst das aber leicht in Deinem Sensor-Sketch behandelt. Da muss irgendwas stehen in der Art metric = gw.getConfig(...).
Was steht in deinem Sketch?
boolean metric = true
oder
boolean metric = false
Gruß
Stefan
Bei mir steht
boolean metric = true;
im Sketch. Habe gestern auch mal versucht den DallasTemperatureSensor Sketch mit dem Battery Sketch zu verbinden. Beim Kompilieren bekomme ich auch keine Fehler. Im Serial Monitor wird auch die Batteriespannung ausgegeben, aber leider kommt in FHEM nicht davon an.
sensor started, id 0
send: 0-0-0-0 s=255,c=0,t=17,pt=0,l=5,st=ok:1.4.1
send: 0-0-0-0 s=255,c=3,t=6,pt=1,l=1,st=ok:0
send: 0-0-0-0 s=255,c=3,t=11,pt=0,l=18,st=ok:Temperature Sensor
send: 0-0-0-0 s=255,c=3,t=12,pt=0,l=3,st=ok:1.0
send: 0-0-0-0 s=255,c=3,t=11,pt=0,l=13,st=ok:Battery Meter
send: 0-0-0-0 s=255,c=3,t=12,pt=0,l=3,st=ok:1.0
send: 0-0-0-0 s=0,c=0,t=6,pt=0,l=5,st=ok:1.4.1
send: 0-0-0-0 s=0,c=1,t=0,pt=7,l=5,st=ok:84.4
1023
Battery Voltage: 3.44 V
Battery percent: 102 %
send: 0-0-0-0 s=255,c=3,t=0,pt=1,l=1,st=ok:102
Habe ich möglicherweise doch eine Fehler im Sketch:
// Example sketch showing how to send in OneWire temperature readings
#include <MySensor.h>
#include <SPI.h>
#include <DallasTemperature.h>
#include <OneWire.h>
#define ONE_WIRE_BUS 3 // Pin where dallase sensor is connected
#define MAX_ATTACHED_DS18B20 16
unsigned long SLEEP_TIME = 300000; // Sleep time between reads (in milliseconds)
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
MySensor gw;
float lastTemperature[MAX_ATTACHED_DS18B20];
int numSensors=0;
int BATTERY_SENSE_PIN = A0; // select the input pin for the battery sense point
int oldBatteryPcnt = 0;
boolean receivedConfig = false;
boolean metric = true;
// Initialize temperature message
MyMessage msg(0,V_TEMP);
void setup()
{
// Startup OneWire
sensors.begin();
// use the 1.1 V internal reference
analogReference(INTERNAL);
// Startup and initialize MySensors library. Set callback for incoming messages.
gw.begin();
// Send the sketch version information to the gateway and Controller
gw.sendSketchInfo("Temperature Sensor", "1.0");
gw.sendSketchInfo("Battery Meter", "1.0");
// Fetch the number of attached temperature sensors
numSensors = sensors.getDeviceCount();
// Present all sensors to controller
for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) {
gw.present(i, S_TEMP);
}
}
void loop()
{
// Process incoming messages (like config from server)
gw.process();
// Fetch temperatures from Dallas sensors
sensors.requestTemperatures();
// Read temperatures and send them to controller
for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) {
// Fetch and round temperature to one decimal
float temperature = static_cast<float>(static_cast<int>((gw.getConfig().isMetric?sensors.getTempCByIndex(i):sensors.getTempFByIndex(i)) * 10.)) / 10.;
// Only send data if temperature has changed and no error
if (lastTemperature[i] != temperature && temperature != -127.00) {
// Send in the new temperature
gw.send(msg.setSensor(i).set(temperature,1));
lastTemperature[i]=temperature;
}
}
{
// get the battery Voltage
int sensorValue = analogRead(BATTERY_SENSE_PIN);
Serial.println(sensorValue);
// 1M, 470K divider across battery and using internal ADC ref of 1.1V
// Sense point is bypassed with 0.1 uF cap to reduce noise at that point
// ((1e6+470e3)/470e3)*1.1 = Vmax = 3.44 Volts
// 3.44/1023 = Volts per bit = 0.003363075
float batteryV = sensorValue * 0.003363075;
int batteryPcnt = sensorValue / 10;
Serial.print("Battery Voltage: ");
Serial.print(batteryV);
Serial.println(" V");
Serial.print("Battery percent: ");
Serial.print(batteryPcnt);
Serial.println(" %");
if (oldBatteryPcnt != batteryPcnt) {
// Power up radio after sleep
gw.sendBatteryLevel(batteryPcnt);
oldBatteryPcnt = batteryPcnt;
}
gw.sleep(SLEEP_TIME);
}
}
Was steht in deinem Sketch?
boolean metric = true
oder
boolean metric = false
Gruß
Stefan
Bei mir steht
boolean metric = true;
im Sketch.
Wie oben beschrieben. :D
gw.sendSketchInfo("Temperature Sensor", "1.0");
gw.sendSketchInfo("Battery Meter", "1.0");
Das sieht für mich doppelt aus, keine Ahnung ob deswegen was durcheinander kommt.
Außerdem nutzt Du beim Sensor auslesen nicht Deinen boolean sondern:
float temperature = static_cast<float>(static_cast<int>((gw.getConfig().isMetric?sensors.getTempCByIndex(i):sensors.getTempFByIndex(i)) * 10.)) / 10.;
Das erklärt zumindest die Fahrenheit-Werte. Das sollte wohl eher so heißen:
float temperature = static_cast<float>(static_cast<int>((metric?sensors.getTempCByIndex(i):sensors.getTempFByIndex(i)) * 10.)) / 10.;
Vielen Dank! Nun zeigt der Sensor mir die Temperaturwerte in Celsius an.
Die eine Zeile habe ich aus dem Sketch gelöscht. Dies bringt jedoch keine Besserung.
Möglicherweise liegt es daran dass FHEM die Reading nicht konkret zu ordnen kann. Im Log kann ich diese nämlich sehen.
Muss man die Batteriewerte dem Sensor manuell zu teilen oder geschieht dies automatisch?
Die Batteriewerte musst Du natürlich manuell senden. SketchInfo brauchst Du dafür nicht.
gw.sendBatteryLevel(batteryPcnt);
sollte reichen. Dabei wird Message I_BATTERY_LEVEL als C_INTERNAL gesendet. Habe leider keinen Batteriesensor uns kann gerade keinen aufbauen/emulieren.
Kannst Du etwa in Log sehen? Da sollte beim Empfang solcher Meldungen folgendes ausgeführt werden:
Log3 ($name,4,"MYSENSORS_DEVICE $name: batterylevel $msg->{payload}");
Die Batteriewerte werden von meinem Sketch gesendet. Ich übertrage zusätzlich auch die Spannung:
gw.sendBatteryLevel(batteryPcnt);
gw.sendBatteryLevel(batteryV);
Folgendes wird von FHEM empfangen:
2015.03.18 19:34:47 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=009(I_LOG_MESSAGE ) ack=0 'read: 0-0-0 s=0,c=1,t=0,pt=7,l=5:22.4'
2015.03.18 19:34:47 5: MYSENSORS gateway MySensors: read: 0-0-0 s=0,c=1,t=0,pt=7,l=5:22.4
2015.03.18 19:34:47 5: MYSENSORS Read: Rx: fr=000 ci=000 c=001(C_SET ) st=000(V_TEMP ) ack=0 '22.4'
2015.03.18 19:34:47 5: MYSENSORS/RAW: /0;0;3;0;9;read: 0-0-0 s=255,c=3,t=0,pt=1,l=1:102
0;0;3;0;9;read: 0-0-0 s=255,c=3,t=0,pt=1,l=1:3
2015.03.18 19:34:47 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=009(I_LOG_MESSAGE ) ack=0 'read: 0-0-0 s=255,c=3,t=0,pt=1,l=1:102'
2015.03.18 19:34:47 5: MYSENSORS gateway MySensors: read: 0-0-0 s=255,c=3,t=0,pt=1,l=1:102
2015.03.18 19:34:47 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=009(I_LOG_MESSAGE ) ack=0 'read: 0-0-0 s=255,c=3,t=0,pt=1,l=1:3'
2015.03.18 19:34:47 5: MYSENSORS gateway MySensors: read: 0-0-0 s=255,c=3,t=0,pt=1,l=1:3
Soweit ich das nachvollziehen kann, empfängt Fhem doch hier die Temperatur von 22.4 °C, den Batteriestand von 102% und auch die Batteriespannung von 3V. Automatisch angelegt wird jedoch nur das Temperatur Reading. Habe die Sensor auch schon öfters gelöscht und neu hinzugefügt. Es bleibt aber ausschließlich beim Temperatur Reading.
Edit: So ganz stimmt die Spannung jedoch nicht. Laut Messgerät sind es nur 2,92 V.
Zwei mal verschiedene Werte mit der Methode sendBatteryLevel zu senden macht keinen Sinn. ABer daran wird es wohl nicht liegen. Deine Meldung kommt irgendwie mit dem Typ I_LOG_MESSAGE (9) statt I_BATTERY_LEVEL (0). Habe leider keine Ahnung, warum das passiert.
Hi hexenmeister, mal eine andere Frage zu MySensors :-)
Habt ihr das Modul jetzt auch über die Update-Funktion von FHEM eingecheckt?
Der Probelauf ist doch positiv verlaufen :-)
Gruß Jens
Norbert hat das Modul schon lange in die FHEM-Repository eingecheckt.
Zitat von: hexenmeister am 18 März 2015, 20:30:12
Zwei mal verschiedene Werte mit der Methode sendBatteryLevel zu senden macht keinen Sinn. ABer daran wird es wohl nicht liegen. Deine Meldung kommt irgendwie mit dem Typ I_LOG_MESSAGE (9) statt I_BATTERY_LEVEL (0). Habe leider keine Ahnung, warum das passiert.
Dann werde ich einen Wert wieder löschen. Du liegst damit richtig, dass sich nichts ändert. Stefan hatte vor längerer Zeit nachfolgenden Sketch gepost:
Zitat von: Porky666 am 29 Oktober 2014, 16:08:04
Hallo Zusammen,
da ich die Mysensor Nodes mit Batterie betreibe, habe ich natürlich auch ein Bedarf ein Reading oder 2 mit dem Batterielevel empfangen zu können.
Nun auf [url]http://mysensors.org/build/battery[url] gibt es den Hinweis mit einem einfachen Spannungsteiler über einen Analogen Eingang (A0) die Spannung zu überwachen.
Ich habe das dort verlinkte Batterysensor.ino von Github mal mit dem Humiditysensor.ino gemergt -- aufgespielt und getestet.
Funktioniert mit deinem im FHEM ankommenden Reading Batterylevel als % Angabe. Das kann man auch varirieren mit Battery in Volt oder beides. Vielleicht passts Euch ja.
#include <SPI.h>
#include <MySensor.h>
#include <DHT.h>
#define CHILD_ID_HUM 0
#define CHILD_ID_TEMP 1
int BATTERY_SENSE_PIN = A0;
#define HUMIDITY_SENSOR_DIGITAL_PIN 3
unsigned long SLEEP_TIME = 900000; // Sleep time between reads (in milliseconds)
int oldBatteryPcnt = 0;
MySensor gw;
DHT dht;
float lastTemp;
float lastHum;
boolean metric = true;
MyMessage msgHum(CHILD_ID_HUM, V_HUM);
MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
void setup()
{
analogReference(INTERNAL);
gw.begin();
dht.setup(HUMIDITY_SENSOR_DIGITAL_PIN);
// Send the Sketch Version Information to the Gateway
gw.sendSketchInfo("Humidity", "1.0");
// Register all sensors to gw (they will be created as child devices)
gw.present(CHILD_ID_HUM, S_HUM);
gw.present(CHILD_ID_TEMP, S_TEMP);
metric = gw.getConfig().isMetric;
}
void loop()
{
delay(dht.getMinimumSamplingPeriod());
float temperature = dht.getTemperature();
if (isnan(temperature)) {
Serial.println("Failed reading temperature from DHT");
} else if (temperature != lastTemp) {
lastTemp = temperature;
if (!metric) {
temperature = dht.toFahrenheit(temperature);
}
gw.send(msgTemp.set(temperature, 1));
Serial.print("T: ");
Serial.println(temperature);
}
float humidity = dht.getHumidity();
if (isnan(humidity)) {
Serial.println("Failed reading humidity from DHT");
} else if (humidity != lastHum) {
lastHum = humidity;
gw.send(msgHum.set(humidity, 1));
Serial.print("H: ");
Serial.println(humidity);
}
{
// get the battery Voltage
int sensorValue = analogRead(BATTERY_SENSE_PIN);
Serial.println(sensorValue);
// 1M, 470K divider across battery and using internal ADC ref of 1.1V
// Sense point is bypassed with 0.1 uF cap to reduce noise at that point
// ((1e6+470e3)/470e3)*1.1 = Vmax = 3.44 Volts
// 3.44/1023 = Volts per bit = 0.003363075
float batteryV = sensorValue * 0.003363075;
int batteryPcnt = sensorValue / 10;
Serial.print("Battery Voltage: ");
Serial.print(batteryV);
Serial.println(" V");
Serial.print("Battery percent: ");
Serial.print(batteryPcnt);
Serial.println(" %");
if (oldBatteryPcnt != batteryPcnt) {
// Power up radio after sleep
gw.sendBatteryLevel(batteryPcnt);
oldBatteryPcnt = batteryPcnt;
}
gw.sleep(SLEEP_TIME); //sleep a bit
}}
Gruß
Stefan und Danke für die Prima Arbeit an dem Modul !
Funktioniert dieser Sketch noch bei dir, Stefan?
Bei mir klappt es auch mit diesem Sketch nicht. Alles wird angelegt, nur das Batterie Reading nicht. Allerdings finden sich wieder exakt die gleichen Meldungen im Log:
2015.03.18 22:08:03 5: MYSENSORS Read: Rx: fr=000 ci=000 c=003(C_INTERNAL ) st=009(I_LOG_MESSAGE ) ack=0 'read: 0-0-0 s=255,c=3,t=0,pt=1,l=1:102'
2015.03.18 22:08:03 5: MYSENSORS gateway MySensors: read: 0-0-0 s=255,c=3,t=0,pt=1,l=1:102
Hat sich möglicherweise irgendwas an den Modulen geändert? Es wird wohl kaum an dem Arduino Nano liegen den ich zum Testen nutze, oder?
Wie gesagt, ich verstehe nicht auf Anhieb, was hier falsch läuft. Ich müsste mal eine Sensor und einen Gateway nachbauen und schauen, was und wo ankommt. Komme leider in der nächsten Zeit nicht dazu. Ich glaube nicht, dass der Sensor etwas falsch sendet. Schon eher wird das in GateWay nicht richtig weitergeleitet. Evtl. liegt hier ein Mißverständnis der Funktion in dem Gateway und dem FHEM-Modul.
Kannst Du mal loggen, was Gateway auf Seriel ausgibt für die Bat.-Meldungen? Also ohne an FHEM angeschlossen zu sein.
Dann sehen wir, ob die Meldungen in dem Modul (glaube ich eher nicht) oder im Gateway als LOG-Message "umdefiniert".
P.S. Auch die seriellen Ausgaben des Sensors wären interessant.
Ich hoffe, dass du mit den seriellen Ausgaben, die Ausgabe über den SerialMonitor meintest. Habe es gerade mal nacheinander getestet:
Gateway: