SIGNALduino IT mit mehreren Codes

Begonnen von bismosa, 05 Dezember 2017, 18:15:57

Vorheriges Thema - Nächstes Thema

bismosa

Hallo,

ich habe mehrere günstige Fenstersensoren (https://www.lightinthebox.com/de/gs-iwds07-drahtlosen-intelligenten-tuer-fenster-magnetkontakt_p4766217.html?prm=1.5.1.1)
Die laufen auch eigentlich sehr gut. Jedoch Senden einige immer mal wieder unterschiedliche Codes für den gleichen Status. Warum habe ich noch nicht verstanden...
Definition meiner Sensoren: (siehe auch: https://forum.fhem.de/index.php/topic,77746.msg717359.html#msg717359)

define Fenster_EG_Schlafz_M IT 1527x26e10 1110 1010 0111 0110
attr Fenster_EG_Schlafz_M IODev nanoCUL
attr Fenster_EG_Schlafz_M devStateIcon Zu:fts_window_1w:cmdalias_Fenster Offen:fts_window_1w_open@red:cmdalias_Fenster Kaputt:message_attention:cmdalias_Fenster
attr Fenster_EG_Schlafz_M eventMap /on:Zu/off:Offen/dimup:Kaputt/
attr Fenster_EG_Schlafz_M icon signal_Fenster_Offen.off
attr Fenster_EG_Schlafz_M model itremote
attr Fenster_EG_Schlafz_M room IT
attr Fenster_EG_Schlafz_M webCmd :

Also:
1110 -> on -> Fenster geschlossen
1010 -> off -> Fenster offen
0111 -> dimup -> Sensor abgefallen
0110 -> dimdown -> Batterie schwach

Jetzt kommt aber auch manchmal:
1000 -> SIGNALduino IT: Code 1000 not supported by Fenster_EG_Terrassentuer
1100 -> SIGNALduino IT: Code 1100 not supported by Fenster_EG_Terrassentuer

Die Codes kommen gelegentlich jeweils beim schließen der Tür. Ob das vielleicht mit dem Batteriestatus zusammenhängt? Keine Ahnung. Wenn ich es ausprobiere muss ich meistens 100x testen damit ich diesen Code wieder bekomme.

Wie kann ich nun bei den Codes 1000 und 1100 auch den Status "on" setzen? Es gibt ja auch die Möglichkeit über userV1setCodes mehrere Codes einzutragen. Jedoch hatte ich bisher keinen Erfolg. Zum testen habe ich den Kontakt mal so definiert:

1527x3c970 0000 0000 0000 0000
userV1setCodes  open:1010 closed:1110 closed1:1000 closed2:1100 battery:0110 defect:0111

Jedoch erhalte ich immer

2017.12.05 18:11:45 5: SIGNALduino IT: EV1527 housecode = 1527x3c970  onoffcode = 1110
2017.12.05 18:11:45 3: SIGNALduino IT: Code 1110 not supported by Fenster_EG_Terrassentuer.


Habe ich das mit den userV1setCodes falsch verstanden? Ich glaube die aktuellste SIGNALduino Version habe ich bereits:

V 3.3.1-dev SIGNALduino cc1101 - compiled at Mar 10 2017 22:54:50


Danke!

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

bismosa

Hallo,

kann es sein das die userV1setCodes nur zum Senden benötigt werden? Das würde dann erklären, warum ich nichts empfangen kann...

Also müsste ich entweder ein 2. Device anlegen mit den entsprechenden Codes (1000 und 1100) und könnte das dann in einem DOIF o.ä. verarbeiten.
Oder ich erstelle mir jeweils ein DOIF:

defmod di_Fenster_EG_Terrassentuer_unknown DOIF (["^SIGNALduino$:^UNKNOWNCODE.i3C970.*$"]) ({\
fhem("setreading Fenster_EG_Terrassentuer state on");;\
Log 1, "Unknowncode - daher manuell Fenster auf geschlossen gesetzt!";;\
})
attr di_Fenster_EG_Terrassentuer_unknown do always
attr di_Fenster_EG_Terrassentuer_unknown room IT

Dann wird das entsprechende Fenster bei jedem unbekannten Code auf geschlossen gesetzt. Dann geht wenigstens die Heizung wieder an  :)

Das geht wohl auch mit nur einem DOIF:

defmod di_Fenster_unknowncode DOIF (["^SIGNALduino$:^UNKNOWNCODE.*$"]) ({\
##Log 1, "Event: $EVENT";;\
my $SensorID = "$EVENT";;\
##Log 1, "Event: $SensorID";;\
$SensorID=~ s/UNKNOWNCODE i//g;;\
$SensorID=substr($SensorID, 0, -1);;\
##Log 1, "ID: $SensorID";;\
my @fenster = devspec2array("DEF=(?i).*$SensorID.*");;\
foreach my $fenst (@fenster) {\
##Log 1, "Name: $fenst";;\
fhem("setreading $fenst state on");;\
##Log 1, "Unknowncode - daher manuell $fenst auf geschlossen gesetzt!";;\
}\
})
attr di_Fenster_unknowncode do always
attr di_Fenster_unknowncode room IT

Im Event ist das Device mit angegeben: "UNKNOWNCODE i3C970A"
Daher filtere ich mir hier "3C970" aus und erhalte mit devspec2array das richtige Device. Das kann ich dann setzen.

Somit habe ich ein Workaround für die fehlenden Codes...

Mich würde trotzdem interessieren, ob nicht mehrere Codes für ein Device empfangen werden können. Es wäre auch interessant, warum diese Codes gesendet werden...

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...