NEWS
Test Adapter bshb (Bosch Smart Home) v0.0.x
-
@holomekc Vielen Dank für die schnelle Umsetzung.
Ich werde es mir anschauen, sobald ich es installieren kann.Ein großes Problem war, dass ich zum Beispiel einen Raum "Bad" hatte, und der Adapter allerdings immer "bad" hinzugefügt hatte und somit "zwei" pro Gerät zugewiesen waren.
-
Moin @holomekc
wäre es möglich die API Abfrage "{{shc_api}}/doors-windows/openwindows" mit aufzunehmen?
Laut eines Entwicklers ist die Funktion nun vorhanden zu prüfen ob ein Fenster offen ist.
-
@JB1985
Hi. Ich kann bestätigen das es geht. Versuche ich zeitnah umzusetzen. -
@JB1985
Hi. Sorry. Eine Frage noch. Ich war kurz am überlegen was ich mit den Infos mache. Aber was ist der Vorteil gegenüber den einzelnen Werten bei den Geräten?Geht es darum, dass man direkt alle Werte erhält? Bei mir sieht das bspw. so aus:
{
"allDoors": [],
"openDoors": [],
"unknownDoors": [],
"allWindows": [
{
"name": "Fensterkontakt",
"roomName": "Schlafzimmer"
}
],
"openWindows": [],
"unknownWindows": [],
"allOthers": [
{
"name": "Eingangstür",
"roomName": "Flur"
},
{
"name": "Fenster",
"roomName": "Wohnzimmer"
}
],
"openOthers": [
{
"name": "Fenster",
"roomName": "Wohnzimmer"
}
],
"unknownOthers": []
}Wie sollte das im Adapter aussehen? Ein state der exakt das zurück gibt was oben zu sehen ist?
-
@holomekc Ich mache das momentan ja über ein anderes Script. Siehe relativ weit oben.
Schön wäre es, wenn man die Anzahl der geöffnet Fenster/Türen raus bekommt sowie welche Fenster/Türe offen sind.
-
@JB1985
So?
Oder ist das schon zu übertrieben?
- 0_raw
Das sind die reinen Daten die ich vorhin schon mal erwähnt habe. Die 0 habe ich dort nur eingefügt, damit das ganze ganz oben einsortiert wird. - all*
Alle Gruppen die oben bereits erwähnt wurden sind hier zusammengefasst. Also doors, windows und others
Ich überlege noch, ob ich das nicht gruppiere (dann könnte ich vielleicht auch das 0_ wegnehmen):
openDoorsAndWindows |- all |- all |- allCount |- allOpen |- allOpenCound |- allUnknown |- allUnknownCount |- doors |- doorsAll |- doorsAllCount |- doorsOpen |- doorsOpenCound |- doorsUnknown |- doorsUnknownCount |- others |- othersAll |- othersAllCount |- othersOpen |- othersOpenCound |- othersUnknown |- othersUnknownCount |- windows |- windowsAll |- windowsAllCount |- windowsOpen |- windowsOpenCound |- windowsUnknown |- windowsUnknownCount |- raw
Viele Grüße
Christopher - 0_raw
-
@holomekc finde ich super umgesetzt!
-
In der Bosch App wird mir bei einem Thermostat angezeigt ich soll die Battereien wechseln.
Ist diese Info auch im Adapter hinterlegt? Ich kann nichts finden. -
@stenmic
Hi. Beim Thermostat müsste BatteryLevel sein und dort dann "faults". Das ist eine Liste von Objekten. Bspw.:{ "type":"LOW_BATTERY", "category":"WARNING" }
Ich weiß nicht genau welche Werte es alles gibt.
-
Version 0.1.6 ist in GitHub:
https://github.com/holomekc/ioBroker.bshb- Offene Türen / Fenster Feature hinzugefügt
-
@holomekc
bei mir sieht es so ausDas Thermostat welches leer anzeigt ist in der Küche.
Wie kann ich [object Object] in einem Blockly oder in vis auswerten?
Eine Liste wird mir nicht angezeigt.
Gruß -
@stenmic
So müsste das gehen. Die debug Ausgabe einfach mit dem ersetzen was du machen möchtest.Gibt es eine Art Export-Funktion für Blockly? Habe jetzt nur ein Bild angehängt.
Edit: Hier der Code. Danke @BigTom91
<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="TC17y~Bap=Mh]2X9@+AU">i</variable> <variable type="" id="WOc#:AXA!]^aHBHvdO`F">value</variable> </variables> <block type="on_ext" id="~Fhy=aEjfMss)[[{26.$" x="-13" y="13"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="%C-WnuL/4k{pCBNjt+f0"> <field name="oid">bshb.0.hdm:HomeMaticIP:3014F711A0000055385A3086.BatteryLevel.faults</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="[{=tDm#$n?XHp{yw~Nsu"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_null" id="(kZ;%]NWf9O56DOe^WfE"></block> </value> <statement name="ELSE"> <block type="controls_forEach" id="NX|GK?ic#Qwa$Wy;y7l}"> <field name="VAR" id="TC17y~Bap=Mh]2X9@+AU" variabletype="">i</field> <value name="LIST"> <block type="variables_get" id="LmNhutHPi.d6hO!dF5m?"> <field name="VAR" id="WOc#:AXA!]^aHBHvdO`F" variabletype="">value</field> </block> </value> <statement name="DO"> <block type="controls_if" id="{~Ib{bo=5%;Iz0ta*5,%"> <value name="IF0"> <block type="logic_compare" id="4V*MB6VJ]B)X.jSejFo["> <field name="OP">EQ</field> <value name="A"> <block type="get_attr" id="HC#*QCTh+o43iMbyb%e9"> <value name="PATH"> <shadow type="text" id="M_=3AWle0*%J;`w:EXOR"> <field name="TEXT">type</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="0gO6k6n/Pd89s5hVaR1p"> <field name="VAR" id="TC17y~Bap=Mh]2X9@+AU" variabletype="">i</field> </block> </value> </block> </value> <value name="B"> <block type="text" id=")i|.K_`dvpct!d;E3vO;"> <field name="TEXT">LOW_BATTERY</field> </block> </value> </block> </value> <statement name="DO0"> <block type="debug" id="At)^=VxGO%)7y8s8FMgZ"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="Y9*5a@)a4M=r,_(D(dKR"> <field name="TEXT">Mache was du möchtest</field> </shadow> </value> </block> </statement> </block> </statement> </block> </statement> </block> </statement> </block> </xml>
Edit2: Ich bin mir nicht sicher, ob ich das richtig aufgebaut habe. Ist das erste mal das ich Blockly verwende. Aber ich hoffe die Idee ist klar. Mir ist unklar wie der Wert vom Objekt in die Variable value kommt und ob die "null" Prüfung überhaupt funktioniert. Sollte aber auch nicht vorkommen default ist immer eine leere Liste [].
-
@holomekc oben rechts das linke Symbol "Blöcke exportieren", dann kannst du den Code hier noch posten.
-
@holomekc
danke für deinen Vorschlag, aber ich habe das jetzt so gelöst.Leider aktualisiert der Adapter den Status nicht automatisch nach dem Austausch der Batterien.
Auch nach einer Stunde nicht. In der Bosch-App wird der Wechsel gleich bestätigt.Starte ich den Adapter neu, passt der Wert.
Gibt es für diesen Datenpunkt ein zeitliches Aktualisierungsintervall?
-
Kann evtl. jemand in seine Glaskugel schauen und mir sagen, warum mir für den Adapter kein Update angezeigt wird?
Bin noch auf 0.1.4 -
@stenmic
Hi. Nein es gibt eine Schnittstelle über die der Controller den Adapter informiert ohne das jeder Wert einzeln erneut abgerufen werden muss. Ich schaue mal, ob ich einen Fehler forcieren kann und welche Nachrichten verschickt werden. Vielleicht habe ich etwas übersehen und der Adapter versteht die Nachricht nicht.
Falls du die alten Batterien noch hast würde es auch helfen, wenn du den Adapter auf debug stellst, dann die Batterien austauschst und mir die Logs schicken würdest.@BigTom91
Hi. 0.1.5 und 0.1.6 sind bisher nur auf github. Ich muss das noch freigeben sozusagen. Ich schaue noch nach dem Problem oben und dann mache ich das asap. -
@stenmic
Ich kann das mit leerer Batterie leider nicht simulieren. Ich habe die Batterien einfach rausgenommen und dann wieder eingesetzt. Die Fehlermeldung ist dann zwar nicht am Gerät selber, sondern am RoomClimateControl aber ich bin davon ausgegangen das dieses Verhalten übertragbar ist:Gerät nicht verfügbar. Hier stehen faults am Ende:
{"path":"/devices/roomClimateControl_hz_2/services/RoomClimateControl","operations":["incrementSetpointTemperature","decrementSetpointTemperature"],"@type":"DeviceServiceData","id":"RoomClimateControl","state":{"schedule":{"profiles":[{"switchPoints":[{"startTimeMinutes":0,"value":..."supportsBoostMode":true},"deviceId":"roomClimateControl_hz_2", "faults":{"entries":[{"source":{"rootDeviceId":"64-da-a0-02-49-0d","deviceServiceId":"NONE","deviceId":"hdm:HomeMaticIP:3014F711A0000055385A4071"},"type":"DEVICE_UNAVAILABLE","category":"WARNING"}]}}
Gerät wieder verfügbar. Hier gibt es keine faults am Ende:
{"path":"/devices/roomClimateControl_hz_2/services/RoomClimateControl","operations":["incrementSetpointTemperature","decrementSetpointTemperature"],"@type":"DeviceServiceData","id":"RoomClimateControl","state":{"schedule":{"profiles":[{"switchPoints":[{"startTimeMinutes":0,"value":..."supportsBoostMode":true},"deviceId":"roomClimateControl_hz_2"}
Der Adapter schaut bei jedem dieser Updates erst einmal nach den tatsächlichen Daten. Also hier bspw. ob sich Werte wie supportsBoostMode verändert haben und dann schaut er noch, ob faults existiert mit Einträgen. Wenn nicht werden die faults auf eine Leere Liste gesetzt.
-
@holomekc
hier der log für leere Batterien :{"path":"/devices/hdm:HomeMaticIP:3014F711A0000056D85A7FAE/services/BatteryLevel","@type":"DeviceServiceData","id":"BatteryLevel","deviceId":"hdm:HomeMaticIP:3014F711A0000056D85A7FAE","faults":{"entries":[{"type":"LOW_BATTERY","category":"WARNING"}]}}
volle Batterien:
{"path":"/devices/hdm:HomeMaticIP:3014F711A0000056D85A7FAE/services/BatteryLevel","@type":"DeviceServiceData","id":"BatteryLevel","deviceId":"hdm:HomeMaticIP:3014F711A0000056D85A7FAE"}
das habe ich auch noch gefunden:
{"sourceId":"hdm:HomeMaticIP:3014F711A0000056D85A7FAE","sourceType":"DEVICE","@type":"message","flags":["STATUS","STICKY"],"messageCode":{"name":"BATTERY_LOW","category":"INFO"},"arguments":{"deviceModel":"TRV"},"id":"a0c7a3bb-28b2-4598-b26e-8e7def91f912","timestamp":1585996409174}
Diesmal hat sich der Datenpunkt "BatteryLevel.faults" weder bei leerer noch bei voller Batterie aktualisiert.
-
@stenmic
Ah vielen Dank! Ich denke ich weiß was das Problem ist. Ich schaue gleich. Aber vermutlich weil ja BatteryLevel leer ist. Also keinen weiteren State hat. -
@stenmic
Hallo im Github ist jetzt 0.1.7 mit dem fix dazu. Wenn du bereit wärst das noch einmal damit zu testen wäre das natürlich toll. Müsstest dann den Adapter halt über Github installieren.Edit: Die letzte Nachricht die du gefunden hast sind übrigens Messages. Die kann man auch auslesen.