Integration von MySensors in FHEM geplant?

Begonnen von fh555, 06 September 2014, 00:40:58

Vorheriges Thema - Nächstes Thema

Beta-User

Ansonsten melden, ich habe ein paar über...
Auch mit ext-Antenne.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

kleinerDrache

der mit externer Antenne "NUR" Antenne oder das erweiterte Modul ? Hab vergessen mir mal so ein Ding zu bestellen für meinen Gateway.
Raspi 2 - Hmusb2 , 2xJeeLink , EnOcean pi: Serie14 Geräte , 6xHM-Sec-Rhs , 6xHM-CC-RT-DN, verschiedene MySensor Nodes, ein bischen MQTT

Feuerpfeil

Zitat von: kleinerDrache am 12 November 2016, 12:28:37
Ich verwende hier Nanos , und nehme nur für power 3,3 V. Die Daten Pins des NRF sind 5V tolerant (hier ist mir in 1 Jahr noch kein NRF abgeraucht). Chip ?? Für OTA ?? Nimm doch den MYSBootloader der braucht keinen extra Chip. Einziger unterschied mittlerweile zum anderen OTA-Bootloader : wärend des Updates kommen keine Messwerte und wenn die neue Firmware fehlerhaft ist musste unter Umständen manuell flashen weil der Sensor nicht mehr reagiert.

Die ATSHA würde ich auch nur verwenden wenn es um kritische Übertragungen geht (Türöffner, Fenster kontakte usw.) Mischbetrieb ist da problemlos möglich. Oder du nimmst halt den Sensbender da ist sowohl ein ATSHA als auch extra Speicher drauf.

Hab heute mal mit dem MySBootloader herumgespielt. Leider wieder ohne großen Erfolg.
Zum einen, kann ich den Pro Mini mit dem Bootloader nicht mehr seriell flashen, (bekomme dann immer eine Out of Sync Fehlermeldung von der IDE) und zum anderen kann die OTA Funktion nicht initialisiert werden.
Ich sehe dann im debug monitor bei Firmware ein fail.
Das ist mittlerweile ein bissl frustrierend.
Bin schon am überlegen, ein komplettes How-To zu schreiben, wenn irgendwann mal alles läuft.


PeMue

Zitat von: Beta-User am 14 November 2016, 12:45:08
@PeMue
Das mit dem battery level als Voltage ist evtl. einfach zu lösen:
Versuch mal, das Mapping manuell zu machen wie im nachstehenden Beispiel für IR_Send; dabei müßte es voltagex heißen mit x=ChildID, unter der Du die battery-Voltage verschickst.
attr MYSENSOR_99 mapReading_ir_send3 3 ir_send
So, ich habe jetzt alles durch, aber die voltage wird im Sketch mit der Library v2.0 nicht angezeigt. Immer beim Einschalten macht fhem ein zusätzliches Attribung:
mapReading_value13 3 value1, da kommen aber keine Werte in value1 an.

Vielleicht werfe ich den kompletten Sensor mal aus fhem raus und lasse ihn neu anlegen ...

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

kleinerDrache

@Feuerpfeil
So ein Tutorial gibt es schon *gg* .

Ich denke Du hast den Bootloader aus der Git genommen. Dieser ist schon etwas älter, mit dem aus meinem Tutorial sollte sowohl seriell als auch per OTA gehen. Aber Achtung hab schon festgestellt bei dem 1MHz Bootloader kann es passieren das man den Brenner in Arduino zwischen dem AVRISP und dem AVRISP MK2 wechseln muss. der Bootloader ist halt immer noch Beta.
Raspi 2 - Hmusb2 , 2xJeeLink , EnOcean pi: Serie14 Geräte , 6xHM-Sec-Rhs , 6xHM-CC-RT-DN, verschiedene MySensor Nodes, ein bischen MQTT

Beta-User

Zitat von: PeMue am 15 November 2016, 21:09:01
So, ich habe jetzt alles durch, aber die voltage wird im Sketch mit der Library v2.0 nicht angezeigt. Immer beim Einschalten macht fhem ein zusätzliches Attribung:
mapReading_value13 3 value1, da kommen aber keine Werte in value1 an.

Vielleicht werfe ich den kompletten Sensor mal aus fhem raus und lasse ihn neu anlegen ...

Gruß PeMue
Hallo PeMue,

das ist ziemlich seltsam. Der Sketch, den Du am 30.10. auszugsweise gepostet hast, sollte - unabhängig von der verwendeten lib-Version - wirklich funktionieren, vor allem, wenn Multimeter präsentiert wird...

Das vorläufig letzte, das mir nach Analyse des Codes als mögliche Ursache erscheint:

Es hängt evtl. an der "3" in Deinem Sendekommando:
   send(msgBatt.set(send_voltage,3));
Das ist bei kleinerDrache ein
  send(msgBatt.set(batteryV,2));
Vielleicht kannst Du einen Test mit "send_voltage,2" machen? Leider habe ich keine Ahnung, was der Parameter an der Stelle zu bedeuten hat, es ist jedenfalls nicht die ChildID; die ist ja in der "msgBatt"-Definition bereits drin und wäre auch beim Sketch von kleinerDrache nicht "2", sondern "0".

Wenn's nicht klappt: Hast Du noch einen Link zu dem Originalen Sketch, auf den Du Dich beziehst?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

kleinerDrache

wenn ich die Doku gerade richtig im Kopf habe kannst du mit dem letzten Wert die Dezimalstellen der gesendeten Werte festlegen.
Raspi 2 - Hmusb2 , 2xJeeLink , EnOcean pi: Serie14 Geräte , 6xHM-Sec-Rhs , 6xHM-CC-RT-DN, verschiedene MySensor Nodes, ein bischen MQTT

PeMue

Hallo zusammen,

Zitat von: Beta-User am 16 November 2016, 09:58:20
Vielleicht kannst Du einen Test mit "send_voltage,2" machen?

https://www.mysensors.org/download/sensor_api_20
ZitatSending data

You can send data to the controller or some other sensor by using the send(msg) method.

bool send(MyMessage &msg, bool ack);

msg - The message you want to send. See MyMessage for details.
ack - Set this to true if you want destination node to send ack back to this node. Default is not to request any ack.
Meine Interpretation: alles <>0 fordert einen ACK an, bei =0 wird kein ACK angefordert. Sprich: zum probieren entweder 0 bzw. 2 oder 3 müsste dasselbe Resultat zeigen.

Zitat von: Beta-User am 16 November 2016, 09:58:20
Wenn's nicht klappt: Hast Du noch einen Link zu dem Originalen Sketch, auf den Du Dich beziehst?
Ja, suche ich raus. Ist aber auch in meinem Sketch dokumentiert. Bin aber gerade nicht am Rechner ...

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

Beta-User

Kurzfassung, muß dringend weg:

Im Moment glaube ich nicht mehr so recht, dass es am Sketch liegt. Vorhin hat noch jemand berichtet, er würde (aber nur mit FHEM als Controller) Nachrichten verlieren.

Auch eine meiner Nodes meldet seltsame Meßwerte, bisher dachte ich, das liegt an der Stromversorgung; es handelt sich um die letzten beiden erwarteten Werte.

Als Test würde ich jetzt erst mal alle zu versendenen Messages zeitlich entzerren ("wait(200)" oder so) bei presentation() der ChildIDs und zwischen Sendebefehlen.

@PeMue: Bitte um Infos zur Infrastruktur und IDE/Boarddef etc...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

kleinerDrache

Zitat
https://www.mysensors.org/download/sensor_api_20
Zitat
Sending data

You can send data to the controller or some other sensor by using the send(msg) method.

Code: [Auswählen]
bool send(MyMessage &msg, bool ack);

msg - The message you want to send. See MyMessage for details.
ack - Set this to true if you want destination node to send ack back to this node. Default is not to request any ack.
Meine Interpretation: alles <>0 fordert einen ACK an, bei =0 wird kein ACK angefordert. Sprich: zum probieren entweder 0 bzw. 2 oder 3 müsste dasselbe Resultat zeigen.

Schau mal etwas weiter unten, da steht noch wie der Pointer "MyMessage &msg" aufgebaut sein kann. Heisst je nach gesendetem Wert kann da auch noch eine weitere Option dazu kommen deswegen lautet die richtige definition des sends:

  send(msgBatt.set(batteryV,2),true);

um ein ACK anzufordern. In diesem Fall steht das ",2" für die Anzahl der Dezimalstellen. Wie genau das Funktioniert ist in der MyMessages.h hinterlegt. Der Wert für ACK kann eh nur zwei Werte annehmen ist ja ein BOOL.
Raspi 2 - Hmusb2 , 2xJeeLink , EnOcean pi: Serie14 Geräte , 6xHM-Sec-Rhs , 6xHM-CC-RT-DN, verschiedene MySensor Nodes, ein bischen MQTT

PeMue

#970
Zitat von: Beta-User am 17 November 2016, 18:02:21
@PeMue: Bitte um Infos zur Infrastruktur und IDE/Boarddef etc...
IDE: Arduino 1.6.5R5
Boarddefinition: Sensebender Micro (https://raw.githubusercontent.com/mysensors/ArduinoBoards/master/package_mysensors.org_index.json), wo das installiert wird, habe ich noch nicht herausgefunden
Sketch Ursprung: https://raw.githubusercontent.com/mysensors/SensebenderMicro/master/Arduino/SensebenderMicro/SensebenderMicro.ino
Sketch: siehe Anhang

Ich werde mittlerweile immer ratloser  ???

Bei einem der beiden sind die Batterien auch immer ruck-zuck leer. Ich vermute, ich habe da einen fake NRF24L01+  >:(

Gruß PeMue

Edit1:
Ok, habe den Pfad gefunden: ..\portable\packages\MySensors
menu.cpu=Processor

######################################
## Sensebender Micro

MysensorsMicro.name=Sensebender Micro

MysensorsMicro.upload.tool=arduino:avrdude
MysensorsMicro.upload.protocol=arduino
MysensorsMicro.upload.maximum_size=30720
MysensorsMicro.upload.maximum_data_size=2048
MysensorsMicro.upload.speed=57600

MysensorsMicro.bootloader.tool=arduino:avrdude
MysensorsMicro.bootloader.unlock_bits=0x3F
MysensorsMicro.bootloader.lock_bits=0x0F
MysensorsMicro.bootloader.low_fuses=0xE2
MysensorsMicro.bootloader.high_fuses=0xD2
MysensorsMicro.bootloader.extended_fuses=0x06
MysensorsMicro.bootloader.file=DualOptiboot/optiboot_atmega328_pro_8MHz.hex

MysensorsMicro.build.board=AVR_MICRO8
MysensorsMicro.build.core=arduino:arduino
MysensorsMicro.build.variant=micro
MysensorsMicro.build.mcu=atmega328p
#MysensorsMicro.build.f_cpu=8000000L

MysensorsMicro.menu.cpu.8Mhz=Atmega328 8Mhz
MysensorsMicro.menu.cpu.8Mhz.build.f_cpu=8000000L

MysensorsMicro.menu.cpu.1Mhz=Atmega328 1Mhz
MysensorsMicro.menu.cpu.1Mhz.build.f_cpu=1000000L


Edit2:
Funktioniert  ??? Mit
attr <name> mapReading_voltage3 3 voltage
kommt jetzt ein reading voltage3 ...
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

Beta-User

#971
@All:
Das mit den verlorenen Messages war in diesem Thread, das klingt irgendwie nicht lustig >:(. Vielleicht hat jemand ja eine Idee, was das eigentliche Problem ist (das mit den Board-Definitionen will mir nicht recht einleuchten, vielleicht vergleiche ich das am WE mal). Ich habe eher den modifizierten NRF-Treiber in Verdacht. Dort wurde - soweit ich das verstanden habe - ein Puffern auf dem NRF eingeführt. Das könnte evtl. ähnliche Folgen haben wie lange Messages (https://forum.mysensors.org/topic/1345/sensebender-micro, ziemlich am Ende des Threads).

EDIT: Hier hat jemand dasselbe Problem (kein dauerhafter connect/reboot) mit domiticz...
EDIT2: Hier hat jemand (der Entwickler des MyS-NRF-Treibers?) vor einiger Zeit bestätigt, dass es bei zu schnellem Senden zu einem Buffer-Overflow kommen kann und empfohlen, ggf. ein "wait(50)" einzubauen...

@PeMue:
Schön, dass es endlich geklappt hat!
Was die NRF angeht: hätte für Tests noch einen bunten Strauß aus diversen Quellen hier liegen, bei Interesse PM und wir klären den Rest beim nächsten Treffen @Gässles-Stüble ;D.

Legt FHEM bei einer Neuanlage des Devices immer noch automatisch auch ein value-Reading an? (Das dürfte ohne die Präsentation eines entsprechenden Childs eigentlich nicht passieren!!!!)

Dein Beitrag hat mich übrigens auf eine Idee gebracht, wie ich den Update-Bootloader ohne größere Klimmzüge auf meine Boards bringen könnte  ;D:
MysensorsMicro.bootloader.file=DualOptiboot/optiboot_atmega328_pro_8MHz.hex Und in der IDE gab es doch irgendwo die Option "Bootloader flashen"...

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

kleinerDrache

#972
@PeMue
ZitatBoarddefinition: Sensebender Micro (https://raw.githubusercontent.com/mysensors/ArduinoBoards/master/package_mysensors.org_index.json), wo das installiert wird, habe ich noch nicht herausgefunden

kommt unter "Datei => Voreinstellungen => Zusätzliche Boardverwalter" rein, sollte da schon einer drinn stehen (z.B. vom ESP8266) hinten auf den Kasten klicken und da dann einen Eintrag pro Zeile. Das Board selber installiert man dann über den Boardverwalter wie beim ESP.

Edit: Hier sind noch ein paar Interessante dabei

@Beta
"Bootloader brennen" findeste im Menu "Werkzeuge" gaaaanz unten. Vorher das passende Board einstellen und den Comport auf den Comport vom ISP einstellen dann brennen. Zum Schluss noch Comport wieder auf das Board mit dem neuen Bootloader umstellen und das Programm Flashen.

Wegen der Board-Definitionen: Da hab ich bisher noch NIE was ausgetauscht immer mit der Original Installierten gearbeitet und hat immer funktioniert. Wenn was net funktioniert liegt es entweder an der verwendeten Lib oder am Programm.
Raspi 2 - Hmusb2 , 2xJeeLink , EnOcean pi: Serie14 Geräte , 6xHM-Sec-Rhs , 6xHM-CC-RT-DN, verschiedene MySensor Nodes, ein bischen MQTT

PeMue

@Beta-User:
Danke für Dein MySensors Starter Guide, das macht einige Dinge doch etwas transparenter.

Allerdings sind mir ein paar Dinge noch nicht wirklich klar (ich beziehe mich auf den obigen SensbenderMicro Sketch).

In setup() wird die komplette Initialisierung übernommen.
Danach kommt die presentation(), wo der node mit dem gateway Verbindung aufnimmt. Warum ist dann im setup folgender Sendebefehl drin:
sendTempHumidityMeasurements(false);
sendBattLevel(false);

Die können doch erst nach erfolgter presentation abgesetzt werden, oder?

Jetzt ist mir auch klar, warum die Batteriespannung so spät aufgetaucht ist: die wird das erste Mal 60*60 s = nach einer Stunde ausgegeben  :(
Daher würde ich in obigem code einfach das false durch true ersetzen und sofort nach Einschalten des Sensors die Werte senden.

Danke + Gruß

Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

Beta-User

@PeMue:
Danke für die Blumen! Und Bitte um Info, wenn irgendwas auffällt. Ist doch schwer, wenn einem (vermeintlich ;)) die Dinge klar sind, dann denkt man manchmal: steht doch da. Und überliest dann die Dinge in den Basisdokumenten (API, da hätte man auch selber drauf kommen können, tssss 8).

Was setup()->presentation() bzw. before()->presentation()->setup() angeht: das ist bei 2.0.0 und 2.0.1 unterschiedlich, bei 2.0.0 wird die setup() noch vor presentation() ausgeführt, bei der beta danach. Ich vermute mal, dass man das mit dem before() eigentlich noch in die 2.0.0 einbauen wollte und es dann aus irgendwelchen Gründen kurzfristig doch gelassen hat. Deswegen stimmt an der Stelle auch die offizielle Doku NICHT. (Bin mit Hauswart über das Thema gestolpert bei dieser DS18B20-ID-Sache).

U.a. deswegen mag ich die beta mal wieder mehr ;). Dann kann man nämlich bei before() die SPI-Sachen (mehrere Devices auf dem Bus, auf dem auch der NRF arbeitet) initialisieren und nach presentation() dann mittels setup() einmalige Initialisierungsinfos vom Controller abholen (und Infos wie die Dallas-Adressen verschicken), bevor die loop() startet. Es gibt wohl auch die Option, die presentation() nochmal seitens des Controllers anzustoßen, also eine Art reboot ohne bootloader-Modus.
Wenn jetzt noch der pull-request mit dem Failsafe-Start endlich kommt, ist wieder fast alles gut!

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files