Nightly und openhab

Moin zusammen,

seit der Nigthly 1958 und auch bei der 1967 bekomme ich in openhab den folgenden Fehler. Wurde vielleicht in Homegear was geändert?

2018-01-11 09:36:25.224 [ERROR] [ematic.handler.HomematicThingHandler] - Can't convert BOOL value '0' with OnOffTypeConverter for 'LEQxxxxx:0#LOWBAT'
org.openhab.binding.homematic.internal.converter.ConverterTypeException: Can't convert BOOL value '0' with OnOffTypeConverter for 'LEQxxxxx:0#LOWBAT'
        at org.openhab.binding.homematic.internal.converter.type.AbstractTypeConverter.convertFromBinding(AbstractTypeConverter.java:114) ~[214:org.openhab.binding.homematic:2.3.0.201801092213]
        at org.openhab.binding.homematic.handler.HomematicThingHandler.updateChannelState(HomematicThingHandler.java:250) ~[214:org.openhab.binding.homematic:2.3.0.201801092213]
        at org.openhab.binding.homematic.handler.HomematicThingHandler.updateDatapointState(HomematicThingHandler.java:226) ~[214:org.openhab.binding.homematic:2.3.0.201801092213]
        at org.openhab.binding.homematic.handler.HomematicBridgeHandler.onStateUpdated(HomematicBridgeHandler.java:233) ~[214:org.openhab.binding.homematic:2.3.0.201801092213]
        at org.openhab.binding.homematic.internal.communicator.AbstractHomematicGateway.lambda$0(AbstractHomematicGateway.java:615) ~[214:org.openhab.binding.homematic:2.3.0.201801092213]
        at org.openhab.binding.homematic.internal.misc.DelayedExecuter.start(DelayedExecuter.java:61) [214:org.openhab.binding.homematic:2.3.0.201801092213]
        at org.openhab.binding.homematic.internal.communicator.AbstractHomematicGateway.eventReceived(AbstractHomematicGateway.java:612) [214:org.openhab.binding.homematic:2.3.0.201801092213]
        at org.openhab.binding.homematic.internal.communicator.server.RpcResponseHandler.handleEvent(RpcResponseHandler.java:94) [214:org.openhab.binding.homematic:2.3.0.201801092213]
        at org.openhab.binding.homematic.internal.communicator.server.RpcResponseHandler.handleMethodCall(RpcResponseHandler.java:47) [214:org.openhab.binding.homematic:2.3.0.201801092213]
        at org.openhab.binding.homematic.internal.communicator.server.RpcResponseHandler.handleMethodCall(RpcResponseHandler.java:64) [214:org.openhab.binding.homematic:2.3.0.201801092213]
        at org.openhab.binding.homematic.internal.communicator.server.BinRpcResponseHandler.run(BinRpcResponseHandler.java:46) [214:org.openhab.binding.homematic:2.3.0.201801092213]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
        at java.lang.Thread.run(Thread.java:748) [?:?]

Der Fehler tritt z.B. bei den HM-CC-RT-DN auf

Danke
Thomas

Ich kann die Meldung bestätigen. Allerdings scheint es etwas komplexer zu sein. Ich benutze openHAB 2.2 stable.

Ich hatte den Fehler meines Wissens nicht, war auf 1927.

Ich bin zur Prüfung auf da neueste Nightly gewechselt, da ich bisher davon ausgegangen bin, dass der Fehler auf das Homematic Binding in 2.3-Snapshot zurückzuführen ist. Dem ist aber nicht so, ich erhalte den Fehler nun auch.

Nach dem Wechsel zurück, auf 1927 kommt der Fehler immer noch.

Allerdings kommt der Fehler nur für 5 von ca. 50 Geräten. Diese sind vom Typ HM-WDS10-TH-O, HM-TC-IT-WM-W-EU und HM-CC-RT-DN. (Ich habe allerdings noch 13 HM-CC-RT-DN und 6 HM-TC-IT-WM-W-EU, die diesen Fehler nicht anzeigen, oder zumindest bisher noch nicht zeigen).

1 Like

Moin Zusammen,

ich bin jetzt auf der 0.8 1968 und hier bestehet in Zusammenhang mit der neuesten openHAB der Fehler immernoch. ICh habe jetzt auch mal geprüft, welche Devices betroffen sind. Typen sind folgende:

HM-CC-RT-DN
HM-TC-IT-WM-W-EU
HM-WDS30-T-O
HM-WDS40-TH-I-2
HM-Sec-SCo
HM-WDS40-TH-I
HM-WDS10-TH-O
HM-Sec-MDIR-2

Wenn ich es richtig gesehen habe, dann trifft es bei mir alle Geräte dieser Typen.

Gruß
Thomas

Guten Abend,

grade homegear auf 0.7.13-1549 upgedatet und direkt auch die Meldung

[ERROR] [ematic.handler.HomematicThingHandler] - Can't convert BOOL value '0' with OnOffTypeConverter for ...:0#LOWBAT

für folgende Homematic Geräte erhalten:

Heizungsthermostate:
HM-CC-RT-DN		
HM-TC-IT-WM-W-EU	

Temperatur-Differenz Sensor:
HM-WDS30-OT2-SM

Aussen Bewegungsmelder:
HM-Sen-MDIR-O	

Habe OpenHAB2 in Version 2.2.0-1 im Einsatz.

Gruß
Kai.

Hallo,

ich habe tatsächlich an den Servicemeldungen etwas verändert, das sollte sich aber in keinster Weise auf LOWBAT ausgewirkt haben - ich habe gerade auch noch einmal den Quelltext überprüft. Ich interpretiere den Fehler so, dass statt einem boolschen Wert eine “0” übertragen wird. Was gibt:

homegear -e rc 'print_v($hg->getValue(<peer ID>, 0, "LOWBAT"));'

bei euch aus?

Viele Grüße

Sathya

Bei mir kommt

(Boolean) 0
Exit code: 0

Hab mit verschiedenen Geräten probiert

Gruß
Thomas

(Boolean) 0

Gruß,

Stephan

Bei mir kommt auch für alle geprüften Devices das gleiche:

(Boolean) 0
Exit code: 0

Das glit sowohl für Geräte, die ich vor Monaten mit 0.7.x angebunden habe als auch für die Geräte, die vor kurzem mit 0.8.x angebunden wurden.

Wobei nach einem Downgrade auf 0.7.12 die gleiche Ausgabe kommt…

Ich habe vorhin mal auf das aktuelle Nightly (0.8.0-1968) upgedated, jetzt sind so ziemlich alle Devices betroffen, die zyklisch Daten senden. Die Fehlermeldung kommt jetzt so alle 1-2 Sekunden. Das ist dann jetzt doch etwas lästig.

Ich habe jetzt als Workaround alle #LOWBAT-items entfernt. Ich hoffe mal, dass ich leere Batterien dann über #UNREACH mitgeteilt bekomme. :wink:

Kann das alles hier auch bestätigen.

(Boolean) 0
Exit code: 0

Selbe Fehlermeldung in OH2.3 #1189 mit Homegear 0.7.13-1549

Ok, die Rückgabe ist so korrekt. Taucht der Fehler zyklisch auf oder einmalig beim Start? Falls nur beim Start, posted noch einmal die Rückgabe von

homegear -e rc 'print_v($hg->getAllValues());'

Dort muss ebenfalls (Boolean) 0 für LOWBAT stehen. Da das bei meinen Geräten der Fall ist, gehe ich davon aus, dass es bei euch ebenfalls passt. Vielleicht kann @gerrieg etwas dazu sagen?

Viele Grüße

Sathya

@sathya
Zur Info, getAllValues wird nur im 1.x binding verwendet, ab dem 2.x binding verwende ich 100%ig die offizielle Homematic API.

Zum Lowbat:
Welcher TYPE kommt denn bei getParamsetDescription (“SERIAL:0”, “VALUES”) zurück für LOWBAT?. Das sollte BOOL sein.
Und welcher Wert kommt bei getParamset (“SERIAL:0”, “VALUES”)? Hier müsste true/false kommen und nicht 0/1
0 bzw 1 ist kein gültiger bool Wert. Laut Fehlermeldung dürfte dass das Problem sein.

Moin,

der Fehler taucht zyklisch auf.

Thomas

Welcher TYPE kommt denn bei getParamsetDescription (“SERIAL:0”, “VALUES”) zurück für LOWBAT?. Das sollte BOOL sein.

Bei mir ist das BOOL.

Und welcher Wert kommt bei getParamset (“SERIAL:0”, “VALUES”)? Hier müsste true/false kommen und nicht 0/1

Ebenfalls Boolean.

Aber vielleicht kann das noch einmal jemand von euch bei einem Gerät überprüfen, bei dem der Fehler auftaucht. Die Befehle lauten:

homegear -e rc 'print_v($hg->getParamsetDescription("<Seriennummer>:0", "VALUES"));'
homegear -e rc 'print_v($hg->getParamset("<Seriennummer>:0", "VALUES"));'

Viele Grüße

Sathya

Hier der Output.

pi@homegear:~ $ sudo homegear -e rc 'print_v($hg->getParamsetDescription("LEQ09xxxx:0", "VALUES"));'
(Struct length=10)
{
  [CENTRAL_ADDRESS_SPOOFED]
  {
    (Struct length=11)
    {
      [CONTROL]
      {
        (String) NONE
      }
      [DEFAULT]
      {
        (Integer) 0
      }
      [FLAGS]
      {
        (Integer) 25
      }
      [ID]
      {
        (String) CENTRAL_ADDRESS_SPOOFED
      }
      [MAX]
      {
        (Integer) 1
      }
      [MIN]
      {
        (Integer) 0
      }
      [OPERATIONS]
      {
        (Integer) 7
      }
      [TAB_ORDER]
      {
        (Integer) 0
      }
      [TYPE]
      {
        (String) ENUM
      }
      [UNIT]
      {
        (String)
      }
      [VALUE_LIST]
      {
        (Array length=2)
        {
          (String) UNSET
          (String) CENTRAL_ADDRESS_SPOOFED
        }
      }
    }
  }
  [CONFIG_PENDING]
  {
    (Struct length=8)
    {
      [FLAGS]
      {
        (Integer) 9
      }
      [ID]
      {
        (String) CONFIG_PENDING
      }
      [MAX]
      {
        (Boolean) 1
      }
      [MIN]
      {
        (Boolean) 0
      }
      [OPERATIONS]
      {
        (Integer) 5
      }
      [TAB_ORDER]
      {
        (Integer) 1
      }
      [TYPE]
      {
        (String) BOOL
      }
      [UNIT]
      {
        (String)
      }
    }
  }
  [DEVICE_IN_BOOTLOADER]
  {
    (Struct length=8)
    {
      [FLAGS]
      {
        (Integer) 9
      }
      [ID]
      {
        (String) DEVICE_IN_BOOTLOADER
      }
      [MAX]
      {
        (Boolean) 1
      }
      [MIN]
      {
        (Boolean) 0
      }
      [OPERATIONS]
      {
        (Integer) 5
      }
      [TAB_ORDER]
      {
        (Integer) 2
      }
      [TYPE]
      {
        (String) BOOL
      }
      [UNIT]
      {
        (String)
      }
    }
  }
  [ENTER_BOOTLOADER]
  {
    (Struct length=8)
    {
      [FLAGS]
      {
        (Integer) 3
      }
      [ID]
      {
        (String) ENTER_BOOTLOADER
      }
      [MAX]
      {
        (Boolean) 1
      }
      [MIN]
      {
        (Boolean) 0
      }
      [OPERATIONS]
      {
        (Integer) 2
      }
      [TAB_ORDER]
      {
        (Integer) 3
      }
      [TYPE]
      {
        (String) ACTION
      }
      [UNIT]
      {
        (String)
      }
    }
  }
  [LOWBAT]
  {
    (Struct length=8)
    {
      [FLAGS]
      {
        (Integer) 9
      }
      [ID]
      {
        (String) LOWBAT
      }
      [MAX]
      {
        (Boolean) 1
      }
      [MIN]
      {
        (Boolean) 0
      }
      [OPERATIONS]
      {
        (Integer) 5
      }
      [TAB_ORDER]
      {
        (Integer) 4
      }
      [TYPE]
      {
        (String) BOOL
      }
      [UNIT]
      {
        (String)
      }
    }
  }
  [RSSI_DEVICE]
  {
    (Struct length=8)
    {
      [FLAGS]
      {
        (Integer) 1
      }
      [ID]
      {
        (String) RSSI_DEVICE
      }
      [MAX]
      {
        (Integer) 2147483647
      }
      [MIN]
      {
        (Integer) -2147483648
      }
      [OPERATIONS]
      {
        (Integer) 5
      }
      [TAB_ORDER]
      {
        (Integer) 5
      }
      [TYPE]
      {
        (String) INTEGER
      }
      [UNIT]
      {
        (String)
      }
    }
  }
  [RSSI_PEER]
  {
    (Struct length=8)
    {
      [FLAGS]
      {
        (Integer) 1
      }
      [ID]
      {
        (String) RSSI_PEER
      }
      [MAX]
      {
        (Integer) 2147483647
      }
      [MIN]
      {
        (Integer) -2147483648
      }
      [OPERATIONS]
      {
        (Integer) 5
      }
      [TAB_ORDER]
      {
        (Integer) 6
      }
      [TYPE]
      {
        (String) INTEGER
      }
      [UNIT]
      {
        (String)
      }
    }
  }
  [STICKY_UNREACH]
  {
    (Struct length=8)
    {
      [FLAGS]
      {
        (Integer) 25
      }
      [ID]
      {
        (String) STICKY_UNREACH
      }
      [MAX]
      {
        (Boolean) 1
      }
      [MIN]
      {
        (Boolean) 0
      }
      [OPERATIONS]
      {
        (Integer) 7
      }
      [TAB_ORDER]
      {
        (Integer) 7
      }
      [TYPE]
      {
        (String) BOOL
      }
      [UNIT]
      {
        (String)
      }
    }
  }
  [UNREACH]
  {
    (Struct length=8)
    {
      [FLAGS]
      {
        (Integer) 9
      }
      [ID]
      {
        (String) UNREACH
      }
      [MAX]
      {
        (Boolean) 1
      }
      [MIN]
      {
        (Boolean) 0
      }
      [OPERATIONS]
      {
        (Integer) 5
      }
      [TAB_ORDER]
      {
        (Integer) 8
      }
      [TYPE]
      {
        (String) BOOL
      }
      [UNIT]
      {
        (String)
      }
    }
  }
  [UPDATE_PENDING]
  {
    (Struct length=8)
    {
      [FLAGS]
      {
        (Integer) 9
      }
      [ID]
      {
        (String) UPDATE_PENDING
      }
      [MAX]
      {
        (Boolean) 1
      }
      [MIN]
      {
        (Boolean) 0
      }
      [OPERATIONS]
      {
        (Integer) 5
      }
      [TAB_ORDER]
      {
        (Integer) 9
      }
      [TYPE]
      {
        (String) BOOL
      }
      [UNIT]
      {
        (String)
      }
    }
  }
}
Exit code: 0

und

pi@homegear:~ $ sudo homegear -e rc 'print_v($hg->getParamset("LEQ09xxxx:0", "VALUES"));'
(Struct length=9)
{
  [CENTRAL_ADDRESS_SPOOFED]
  {
    (Integer) 0
  }
  [CONFIG_PENDING]
  {
    (Boolean) 0
  }
  [DEVICE_IN_BOOTLOADER]
  {
    (Boolean) 0
  }
  [LOWBAT]
  {
    (Boolean) 0
  }
  [RSSI_DEVICE]
  {
    (Integer) -59
  }
  [RSSI_PEER]
  {
    (Integer) 0
  }
  [STICKY_UNREACH]
  {
    (Boolean) 0
  }
  [UNREACH]
  {
    (Boolean) 0
  }
  [UPDATE_PENDING]
  {
    (Boolean) 0
  }
}
Exit code: 0

Für mich sieht das korrekt aus. @gerrieg?

Bei der CCU steht da:

[MAX]
{
	(Boolean) true
}
[MIN]
{
	(Boolean) false
}

und

[LOWBAT]
    {
    	(Boolean) false
    }

Im Event musst Du auch einen bool type mit true/false schicken, laut Fehlermeldung dürftest Du hier einen Integer mit 1/0 senden.

Hallo @gerrieg,

ich hatte schon überlegt, ob ich was zu der “0” schreibe :stuck_out_tongue:. Die kommt durch direkte Konvertierung des boolschen Wertes an den C++ -Stream zustande (https://github.com/Homegear/libhomegear-base/blob/master/src/Variable.cpp#L335):

result << "(Boolean) " << booleanValue << (oneLine ? " " : "\n");

Das ist also keine 0 sondern wirklich ein Boolean. print_v() ist eine homegeareigene Funktion zum Ausgeben von Homegear-Variablen. Sonst stünde dort (Integer) 0.

Aber: Der Fehler lag mit an Sicherheit grenzender Wahrscheinlichkeit tatsächlich in den Events. Das zyklische Auftreten war also der entscheidende Hinweis - danke @dibbler42! Prüft bitte, ob es im nächsten Nightly (0.8.0-1979) funktioniert. Danke noch einmal an alle und an dich @gerrieg!

Commit mit dem Fix: https://github.com/Homegear/libhomegear-base/commit/7ba841b0551ddbe57b2148f153d85b3ecf6c4aa2

Viele Grüße

Sathya

2 Likes

Habe gerade die 1975 installiert, wenn die 1979 für Jessie da ist melde ich mich wieder.

Thomas