Integration von MySensors in FHEM geplant?

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

Vorheriges Thema - Nächstes Thema

Beta-User

Zitat von: r_knipp am 02 Mai 2016, 11:31:19
Ja? Meinst du das ist der schnellere Weg? viegeners Lösung mit Arduino Mini könnte ich nochmal austesten. Hatte mich da irgendwie auf die ESP only Version versteift und die lief ja noch nicht als Sender/Empfänger.
Bin auch nicht der Experte und habe mich in letzter Zeit auch nicht mehr mit IR befaßt... Es schient aber funktionierende Beispiele zu geben mit ESP-only. Z.B. https://alexbloggt.com/esp8266-smarthome-gateway/, wobei es dabei dann keine direkte Verbindung zu FHEM zu geben scheint. Als Vorteil der ESP-Lösung kam es mir vor, dass man die Befehle via http-request recht generisch an die Fernbedienung sendet (und damit wohl eher einfach einen FLOORPLAN erstellen könnte). Mir schwebte sowieso eigentlich eine "send-only"-Lösung vor, daher habe ich das mit dem Rückkanal bislang noch nicht so verfolgt.

Zitat von: r_knipp am 02 Mai 2016, 11:31:19
Im Prinzip würde es ja reichen wenn man V_VAR1 auslesen könnte und das ganze dann unter einem Command speichern kann.
Ich habe bisher eine Fernbedienung von einem Panasonic DVD-Player getestet. Über die serielle Schnittstelle kommt halt der Code in Rohform.
In FHEM passiert gar nichts. Sicher dass da auch ein neues Reading auftauchen sollte? Bei den üblichen Sensoren wie Temp und Luftfeuchte bestimmt aber V_VAR1 ist nicht auf ein Reading gemappt. Denn wenn ich das richtig verstanden habe sind doch bestimmte Variablen, z.B. V_TEMP beim Temp-Sensor, auf entsprechende Readings gemappt, die dann bei Vorhandensein der Variablen angelegt werden.
Dass V_VAR1 nicht gemappt wird, war mir offen gestanden nicht klar. Allerdings habe ich auch einen Pulszähler für's Gas, der auch mit V_VAR1 arbeitet. Und darunter kommt der aktuelle Zählerstand zurück (bzw. wird der letzte bekannte Zählerstand an die Node geschickt). Ob das bei den einzelnen Sensor-Node-Definitionen unterschiedlich ist, kann ich aber nicht sagen.

Wenn Du aber an der Konsole der Node beim IR-Empfang etwas als gesendet siehst, sollte sich das doch auch über die FHEM-Komandozeile an die Node schicken lassen, oder? Also copy aus der seriellen Konsole und dann via FHEM zurück wie ein abgelesener Zählerstand? Wenn das funktioniert, sollte man es auch z.B. über einen Floorplan-Link als command hinterlegen können?
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

r_knipp

Zitat von: joe_re am 02 Mai 2016, 13:01:18
Mir schwebte sowieso eigentlich eine "send-only"-Lösung vor, daher habe ich das mit dem Rückkanal bislang noch nicht so verfolgt.
Würde mir im Prinzip auch reichen. So oft muss man ja keine neuen Kommandos anlernen. Die kann man sicher auch aus der seriellen Konsole kopieren.
Wär nur halt bequemer mit nem Lernmodus ;)

Zitat von: joe_re am 02 Mai 2016, 13:01:18
Dass V_VAR1 nicht gemappt wird, war mir offen gestanden nicht klar. Allerdings habe ich auch einen Pulszähler für's Gas, der auch mit V_VAR1 arbeitet. Und darunter kommt der aktuelle Zählerstand zurück (bzw. wird der letzte bekannte Zählerstand an die Node geschickt). Ob das bei den einzelnen Sensor-Node-Definitionen unterschiedlich ist, kann ich aber nicht sagen.

Wenn Du aber an der Konsole der Node beim IR-Empfang etwas als gesendet siehst, sollte sich das doch auch über die FHEM-Komandozeile an die Node schicken lassen, oder? Also copy aus der seriellen Konsole und dann via FHEM zurück wie ein abgelesener Zählerstand? Wenn das funktioniert, sollte man es auch z.B. über einen Floorplan-Link als command hinterlegen können?
Hmm... Wenn das bei deinem Gaszähler funktioniert sollte es ja auch beim IR funktionieren. Da muss ich nochmal etwas rumprobieren.
Wie ich einen Code über FHEM senden soll kann ich mir allerdings noch nicht vorstellen. Das ist ganz schön viel. Werde heute Abend mal posten was am Terminal so ankommt.

Beta-User

Habe eben noch in die 10_MYSENSORS_DEVICE.pm gesehen (hoffe, das war die aktuelle Fassung). Dort steht
_______________________
S_IR                    => { receives => [V_IR_SEND], sends => [V_IR_RECEIVE] }, # Ir sender/receiver device
_______________________

Das würde das fehlende Mapping erklären; vielleicht reicht es, die Presentation-Bezeichnung im Sketch anzupassen?
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

Hauswart

Der Sketch arbeitet als S_LIGHT bzw. für ausgehende Nachrichten V_VAR1 und für ankommende V_LIGHT?

Mmh da sind einige Variablen zusammengewürfelt.

Probiere doch mal meinen Sketch (leicht modifiziert): https://github.com/Kolbi/Arduino/blob/patch-2/libraries/MySensors/examples/IrSensor/IrSensor.ino

Danach das alte Device aus FHEM löschen und neu pairen.
1. Installation:
KNX, Tasmota (KNX), Sonos, Unifi

2. Installation:
HM-CFG-USB, Unifi (, SIGNALduino 868, MySensors, SIGNALduino 433)

Beta-User

Interessante Sache, das und die Bezeichnungen/Variablen gehen wohl wirklich ordentlich durcheinander.

Wenn ich das mit meinen (Gas-) Wasserzähler vergleiche:
Ist es nicht so, dass FHEM unter "Sends" erwartet, was von Seiten des Sensors kommt?
Dann müßte es korrekterweise im Sketch heißen: MyMessage msg(CHILD_1, V_IR_RECEIVE); (nicht V_IR_SEND)
Will man von Seiten FHEM einen "echten" IR-Code (wie unter IR_RECEIVE empfangen) versenden, müßte man das der Variable IR_SEND so wie empfangen mit auf den Weg geben.

Hauswarts Sketch geht dort m.E. aber im Moment noch nicht weit genug, weil die umgewandelte S_LIGHT-Mimik immer noch "hart" mit einem ganz bestimmten "lauter" bzw. "leiser"-Signal verbunden ist und nur zwischen "1" und "irgendetwas anderes" unterscheidet. Nach meinem Empfinden müßte man dort eine (deutlich kompliziertere?) Logik hinterlegen bzw. evtl. auch "nur" den Message-Inhalt an irsend() übergeben? Müßte ich (oder besser jemand, der leichter die richtigen Kommandos dafür findet und zusammenbastelt) auch erst mal ausprobieren...

ABER: Sieht mir nach einem Ansatz aus! 8) Vielleicht wird das doch noch schneller als gedacht etwas mit meinem IR-Projekt!
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

Hauswart

Die IR Logik in Sketch ist natürlich individuell anzupassen. Die wird so wohl nicht gehen. Habe aber mir IR auch noch nie genau angeschaut.
1. Installation:
KNX, Tasmota (KNX), Sonos, Unifi

2. Installation:
HM-CFG-USB, Unifi (, SIGNALduino 868, MySensors, SIGNALduino 433)

r_knipp

#711
So, ich bin etwas weiter gekommen. Mein geänderter Sketch im Anhang.
In FHEM passiert bei Tastendruck auf Fernbedienung nichts.
Das steht zum Sensor im Logfile:

2016.05.02 19:18:49 3: MYSENSORS: ignoring internal-msg from unknown radioId 100, childId 255 for I_REQUEST_SIGNING
2016.05.02 19:18:49 3: MYSENSORS: ignoring presentation-msg from unknown radioId 100, childId 255, sensorType 17
2016.05.02 19:18:49 3: MYSENSORS: ignoring internal-msg from unknown radioId 100, childId 255 for I_CONFIG
2016.05.02 19:18:51 3: MYSENSORS: ignoring internal-msg from unknown radioId 100, childId 255 for I_SKETCH_NAME
2016.05.02 19:18:51 3: MYSENSORS: ignoring internal-msg from unknown radioId 100, childId 255 for I_SKETCH_VERSION
2016.05.02 19:18:51 3: MYSENSORS: ignoring presentation-msg from unknown radioId 100, childId 3, sensorType 20
2016.05.02 19:19:27 3: MYSENSORS: ignoring internal-msg from unknown radioId 100, childId 255 for I_REQUEST_SIGNING


Dies bekommt man über den seriellen Monitor in Arduino:

sensor started, id=100, parent=0, distance=1
send: 100-100-0-0 s=255,c=3,t=11,pt=0,l=9,sg=0,st=ok:IR Sensor
send: 100-100-0-0 s=255,c=3,t=12,pt=0,l=3,sg=0,st=ok:1.0
send: 100-100-0-0 s=3,c=0,t=20,pt=0,l=0,sg=0,st=ok:
Decoded Unknown: Value:0 (0 bits)
Raw samples(100): Gap:3314
  Head: m3450  s1750
0:m400 s450 1:m400 s1300 2:m450 s450 3:m400 s450
4:m400 s450 5:m400 s450 6:m400 s450 7:m450 s450
8:m400 s450 9:m400 s450 10:m400 s450 11:m450 s450
12:m400 s450 13:m400 s1300 14:m400 s450 15:m450 s450

16:m400 s450 17:m400 s450 18:m400 s450 19:m450 s450
20:m400 s1300 21:m400 s1300 22:m450 s450 23:m400 s1300
24:m400 s450 25:m450 s400 26:m450 s450 27:m400 s450
28:m400 s450 29:m400 s450 30:m450 s450 31:m400 s450

32:m400 s1300 33:m450 s450 34:m400 s450 35:m400 s450
36:m400 s450 37:m400 s450 38:m450 s450 39:m400 s450
40:m400 s1300 41:m450 s400 42:m450 s450 43:m400 s450
44:m400 s1300 45:m450 s1300 46:m400 s450 47:m400 s1300

48:m450
Extent=55550
Mark  min:400 max:450
Space min:400 max:1300


Wenn ich den Code des Moduls richtig verstanden habe empfängt es V_IR_SEND und sendet V_IR_RECEIVE.

Edit:
Habs mal mit meiner Wordclock-Ferbedienung (Scheckkarten-FB) ausprobiert. Da erkennt er sogar manchmal NEC Code.

Beta-User

Cool, dass das vorangeht. Allerdings:
Zitat von: r_knipp am 02 Mai 2016, 19:37:11
Wenn ich den Code des Moduls richtig verstanden habe empfängt es V_IR_SEND und sendet V_IR_RECEIVE.

Tippe eher auf den genau umgekehrten Fall:

Zitat von: joe_re am 02 Mai 2016, 14:39:07
Wenn ich das mit meinen (Gas-) Wasserzähler vergleiche:
Ist es nicht so, dass FHEM unter "Sends" erwartet, was von Seiten des Sensors kommt?
Dann müßte es korrekterweise im Sketch heißen: MyMessage msg(CHILD_1, V_IR_RECEIVE); (nicht V_IR_SEND)
Will man von Seiten FHEM einen "echten" IR-Code (wie unter IR_RECEIVE empfangen) versenden, müßte man das der Variable IR_SEND so wie empfangen mit auf den Weg geben.

Willst Du das nicht einfach mal ausprobieren?
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

r_knipp

Zitat von: joe_re am 02 Mai 2016, 21:44:45
Tippe eher auf den genau umgekehrten Fall:
Im Modulcode steht:

  S_IR                    => { receives => [V_IR_SEND], sends => [V_IR_RECEIVE] }, # Ir sender/receiver device


Aber ich probiere mal nach deinem Vorschlag aus.

r_knipp

#714
Vielleicht hattest du Recht. Ich habe jetzt auf jeden Fall ein Reading, das sich bei Tastendruck ändert.
Allerdings steht immer nur fffff... oder 0000... drin.

Ich dachte MyMessage msg (); sendet den empfangenen Code an FHEM und das Modul empfängt daher V_IR_SEND.
Scheint wohl andersrum zu sein.
Dann bezieht sich die Angabe im Code wohl auf den Sensor und nicht auf das Modul?

Edi77

#715
Hallo,

Sorry vielleicht für die Dumme Frage, beschäftige mich erst seit kurzer Zeit mit MySensors.
Ich habe jetzt ein ESP 8255 als WLAN Gateway was auch funktioniert und connected
An einem Nano mit einem NF24L01+ habe ich einen MQ-135 laufen am Serial Port sehe ich das er auch schön Daten liefert.
nach diesem Muster https://www.mysensors.org/build/gas

Im FHEM habe ich

define MySensorsGateway MYSENSORS 192.168.x.x:5003
attr MySensorsGateway autocreate 1
attr MySensorsGateway first-sensorid 1
attr MySensorsGateway requestAck 1
attr MySensorsGateway room MySensors
attr MySensorsGateway stateFormat connection
set MySensorsGateway inclusion-mode on


Ich dachte das FHEM jetzt den MQ-135 selbst findet und anlegt, oder irre ich mich, den es passiert nichts. Oder muss ich das per Hand zu Fuß machen?

Master FHEM 6 als VM auf ESX Ubuntu 20.04 LTS mit MAXCube/MAX!/FS20|TabletUI|Flightradar|Tasmota|TTN Lora|CCU3 HomematicIP|RPi mit GammaScout|MQTT EasyESP 8266|LuftdatenInfo|deCONZ HUEDev|probemon|Siemens Logo|P4D|3D PRINTER RAISE3D

r_knipp

Du musst am Gateway den Inclusion Mode einschalten. Dann findet er den Sensor automatisch.

set gateway inclusion-mode on

in deinem Fall.

Edi77

Danke für die schnelle Antwort.
Wie findet eigentlich MySensors seine "Clients"?
Beim MQ-2/MQ-135 ist sowas im script nicht hinterlegt.
Master FHEM 6 als VM auf ESX Ubuntu 20.04 LTS mit MAXCube/MAX!/FS20|TabletUI|Flightradar|Tasmota|TTN Lora|CCU3 HomematicIP|RPi mit GammaScout|MQTT EasyESP 8266|LuftdatenInfo|deCONZ HUEDev|probemon|Siemens Logo|P4D|3D PRINTER RAISE3D

r_knipp

Wenn ich das richtig verstanden habe, sendet der Sensor beim Start eine presentation message (bestimmt auch zwischendurch im Betrieb?), die unter anderem auch seinen Typ enthält. Damit weiß das Gateway dass ein neuer Sensor da ist und was für einer es ist.
Schau mal hier: https://www.mysensors.org/download/serial_api_14

Beta-User

Zitat von: Edi77 am 03 Mai 2016, 01:08:21
Wie findet eigentlich MySensors seine "Clients"?
Beim MQ-2/MQ-135 ist sowas im script nicht hinterlegt.

Der MQ-2 ist als "AIR_QUALITY" definiert und auch so in der MYSENSORS_DEVICE.pm als typ. Beispiel genannt. Wenn das bei Dir in der "Presentation" auch so ist (wie im Beispielsketch von der MySensors-Seite), müßte es eigentlich funktionieren.
Die Presentation wird (jedenfalls nach meinen bisherigen Beobachtungen) nur beim Start der Node durchlaufen, allerdings immer wieder  wiederholt, bis ein Controller (FHEM) eine Node-ID zurückgibt (die wird dann allerdings gespeichert und bleibt auch bei einem erneuten Flashen erhalten). Das kann man ganz gut auf der seriellen Konsole der Node nachvollziehen. (Wenn Du die Node-ID ggf. doppelt vergeben/in 2 Arduinos gespeichert hast, solltest Du für die Node manuell (im Sketch) eine (neue) ID vergeben.

Wenn also FHEM Deine Node nicht "sieht", obwohl "inclusion mode" an ist, dürfte es ein Problem mit dem Funk sein (v.a. Reichweite oder ein fake-NRF). Beobachte mal die serielle Konsole der Sensor-Node.

Steht der Funkverkehr grundsätzlich, sollte das Device auch automatisch angelegt werden. Damit ist aber noch nicht gesagt, dass auch die übermittelten Werte ohne weiteres verwendbar sind; auch hier müssen die Angaben des Sensors und des FHEM-Moduls zueinander passen (da kämpfen wir grade beim IR-Modul rum, sonst hatte ich bislang damit (fast) keine Probleme...).
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