[workaround] wie prüfen auf String mit [ ] ? => error: Wrong time

Begonnen von JoeALLb, 02 Mai 2017, 11:29:16

Vorheriges Thema - Nächstes Thema

JoeALLb

Habe per Suche leide rnichts passendes gefunden:
Wenn ich folgende Prüfung nutze,
DOELSEIF ([FritzBox:1-state] eq "=> [=]")
bekomme ich die Fehlermeldung:
error: Wrong timespec =: either HH:MM:SS or {

Ein Escapen mit \ macht es nicht besser. Was habe ich überlesen?

Danke, schöne Grüße Joe


Edit1:
Kann es sein, dass DOIF auf readings die mit zahlen gehen nicht triggert?
Ein
setreading FritzboxCallList  1-state xx
triggert jedenfalls nicht dieses DOIF:
([FritzBox:1-state] eq "xx" )

FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Damian

DOIF stolpert über [=], weil es kein Reading sein kann, wird es als Zeit interpretiert, was aber auch falsch ist. Es gibt z. Zt. keine elegante Lösung, außer man packt  den String in ein Dummy und vergleicht über diesen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

JoeALLb

Hm, habe es lokal in ein reading gepackt und vergleiche damit, bekomme jetzt die Fehlermeldung:
condition c10: syntax error, ReadingValDoIf

Siehe: (@1212321  ist eine dummyID)
defmod Fritzbox.DI2 DOIF ([FritzBox:1-state] eq "<= ((o))")\
  ( set telegram msg @1212321 Ausgehender Anruf klingelt [telegram:msgId])\
DOELSEIF ([FritzBox:1-state] eq "xx")\
  ( set telegram msg @133974194 Test [telegram:msgId])\
DOELSEIF ([FritzBox:1-state] eq "=> ((o))")\
  ( set telegram msg @1212321 Eingehender Anruf klingelt [telegram:msgId])\
DOELSEIF ([FritzBox:1-state] eq "<= X")\
  ( set telegram msg @1212321 Ausgehender, erfolgloser Anruf [telegram:msgId])\
DOELSEIF ([FritzBox:1-state] eq "=> X")\
  ( set telegram msg @1212321 Ausgehender, erfolgloser Anruf [telegram:msgId])\
DOELSEIF ([FritzBox:1-state] eq "O_O")\
  ( set telegram msg @1212321 Nachricht auf AB [telegram:msgId])\
DOELSEIF ([FritzBox:1-state] eq "<=")\
  ( set telegram msg @1212321 Ausgehender Anruf beendet [telegram:msgId])\
DOELSEIF ([FritzBox:1-state] eq "=>")\
  ( set telegram msg @1212321 Eingehender Anruf beendet [telegram:msgId])\
DOELSEIF ([FritzBox:1-state] eq [$SELF:ein])\
  ( set telegram msg @1212321 Eingehender Anruf [telegram:msgId])\
DOELSEIF ([FritzBox:1-state] [$SELF:aus])\
  ( set telegram msg @1212321 Ausgehender Anruf [telegram:msgId])\
\

attr Fritzbox.DI2 do always

setstate Fritzbox.DI2 initialized
setstate Fritzbox.DI2 2017-05-02 12:16:40 Device FritzBox
setstate Fritzbox.DI2 2017-05-02 12:15:03 aus <= [=]
setstate Fritzbox.DI2 2017-05-02 12:15:48 cmd 0
setstate Fritzbox.DI2 2017-05-02 12:16:40 e_FritzBox_1-state <= [=]
setstate Fritzbox.DI2 2017-05-02 12:14:48 ein => [=]
setstate Fritzbox.DI2 2017-05-02 12:16:40 error condition c10: syntax error, ReadingValDoIf"\

setstate Fritzbox.DI2 2017-05-02 12:15:48 state initialized

FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

JoeALLb

:D Puh, peinlich, danke!!!

Funktioniert mit dem dummy als Workaround. Vielleicht wäre hier wie in Perl die Verwendung von ' ansta " eine Lösung, um definitiv keine Ersetzungen zu machen? Nur als Anregung, mir reicht der Umweg im moment bestens!!
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Damian

Zitat von: JoeALLb am 02 Mai 2017, 14:22:54
:D Puh, peinlich, danke!!!

Funktioniert mit dem dummy als Workaround. Vielleicht wäre hier wie in Perl die Verwendung von ' ansta " eine Lösung, um definitiv keine Ersetzungen zu machen? Nur als Anregung, mir reicht der Umweg im moment bestens!!

ja, innerhalb von Anführungszeichen sollte in der Bedingung keine Ersetzung stattfinden - das muss ich aber noch programmieren.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF