NEWS
Sonoff Schalt Problem mit Visualisierung
-
Hallo ioBroker Freunde,
ich hab hier eine Frage bezüglich der Ansteuerung von Sonoff Basic Aktoren.
Auch wenn der ein oder andere mich jetzt gleich vielleicht steinigen möchte, ich setze nicht die ioBroker eigene VIS ein.Ich habe bereits seit Jahren bei mir die smartVISU zur Visualisierung (noch aus FHEM Zeiten vor ioBroker).
Seit rund 1 Jahr setze ich aber auf ioBroker und habe nach und nach die Visu mit den Datenpunkten angepasst.Ich scheitere jedoch an dem Problem, meine wenigen Sonoff Aktoren über die smartVISU mit wenig Aufwand schaltfähig zu machen. Die smartVISU setzt bei der Anbindung an den ioBroker auf den socket.io Adapter. Der Austausch funktioniert auch einwandfei, aber eben nicht bei den Sonoff Geräten.
Mit der smartVISU habe ich die Möglichkeit für die Schaltzustände 1 oder 0, true oder false bzw. on oder off zu übergeben. Wenn ich jetzt einen Datenpunkt in ioBroker erzeuge und in der smartVISU hinterlege, dann werden bei Betätigung in der smartVISU diese Werte auch korrekt in ioBroker eingetragen.
Wenn ich das aber mit dem Power Datenpunkt eines Sonoff mache, dann wird zwar true geschrieben und die zb. Leuchte eingeschaltet, aber bei dem false Wert sieht man kurz den übergebenen Wert im ioBroker und im nächsten Moment springt der Sonoff wieder auf true und die Leuchte bleibt an.
Ich habe jetzt sehr lange über Javascript rumgedoktert und eine (wie ich finde) sehr umständliche Lösung gefunden mit der es funktioniert und auch die Rückmeldung an die smartVISU bei einem externen Schaltbefehl zb. über Alexa oder dem WebIF des Sonoff eingebunden. Allerdings muss ich den Umweg über einen http Request machen.
Erstaunlich finde ich jedoch, dass wenn ich die ioBroker VIS nehme und mir ein Bulb Widget schnell anlege und mit dem Power Datenpunkt des Sonoff verbinde, es direkt ohne Probleme funktioniert (an/aus).
Anbei einmal das Blockly, was ich mir aus der Not gebastelt habe. Vielleicht kann der ein oder andere mir ja dabei helfen, dass etwas "kleiner" und übersichtlicher zu gestalten.
<xml xmlns="http://www.w3.org/1999/xhtml"> <block type="comment" id="44IYr3$2=l3UM1z+1{-1" x="313" y="13"> <field name="COMMENT">Datenpunkt für SmartVISU Objekt</field> <next> <block type="create" id="/;tsRc/DmdF3(7yK=DSJ"> <field name="NAME">javascript.0.SmartVISU.Beleuchtung.Schlafzimmer.Stehlampe</field> <next> <block type="comment" id="*!].Hbqt-6]{O|{Sk$|9"> <field name="COMMENT">Bedienung durch SmartVISU</field> <next> <block type="on" id="a=r#8--rGKl)UcL@QZ}s"> <field name="OID">javascript.0.SmartVISU.Beleuchtung.Schlafzimmer.Stehlampe</field> <field name="CONDITION">any</field> <field name="ACK_CONDITION">false</field> <statement name="STATEMENT"> <block type="controls_if" id="c)@EbNSSx+SP%Qd19I;i"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="[ZereT]DD8oQ@~AiN4|H"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="qhqWl8VnxJKz,AC7YY_M"> <field name="ATTR">val</field> <field name="OID">javascript.0.SmartVISU.Beleuchtung.Schlafzimmer.Stehlampe</field> </block> </value> <value name="B"> <block type="logic_boolean" id="[oys,lOz-ZNI:HQx!WqR"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="request" id="{uGW]M`AlWwi-Pm;%Msi"> <mutation with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG"></field> <value name="URL"> <shadow type="text" id="Y`y|_20Xoj(w?I@@)%uG"> <field name="TEXT">http://192.168.178.234/cm?cmnd=Power%20on</field> </shadow> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="%JYclAw;L`Mp*SU{LhtL"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="rQjo+UFehM8*t`qvG+:s"> <field name="ATTR">val</field> <field name="OID">javascript.0.SmartVISU.Beleuchtung.Schlafzimmer.Stehlampe</field> </block> </value> <value name="B"> <block type="logic_boolean" id="3{Dve;risr`{(PvQHr-!"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO1"> <block type="request" id="WyjYt6+K(WPUCpxT:2$M"> <mutation with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG"></field> <value name="URL"> <shadow type="text" id="4*bl3Zd1K2qz7p}N~ukm"> <field name="TEXT">http://192.168.178.234/cm?cmnd=Power%20off</field> </shadow> </value> </block> </statement> </block> </statement> <next> <block type="comment" id="a70DH%cj3~D3rb:0A4nb"> <field name="COMMENT">Rückmeldung für SmartVISU durch anderen Schaltbefehl (Alexa, WebIF Sonoff,...)</field> <next> <block type="on" id="*UzU]~4wJ`h.|ci{{8xd"> <field name="OID">sonoff.0.DVES_7F4BC5.POWER</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="tm(7K8yfzRVP8rR,BTYP"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="4=:Y/gR_]-Y2tJ3n:l3;"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="ulV?UIS$0TMS*z+@Xa|+"> <field name="ATTR">val</field> <field name="OID">sonoff.0.DVES_7F4BC5.POWER</field> </block> </value> <value name="B"> <block type="logic_boolean" id="+@qW)?~$xw?@8~xownH6"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="update" id="FQu*@|l.3$RVuPBH+SCJ"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.SmartVISU.Beleuchtung.Schlafzimmer.Stehlampe</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="E{:7_h.}-N4{g@fTZfoq"> <field name="NUM">1</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="LU50xS:#$j9u#^!*G_3^"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="~|Gxi;ns6V,lhC3u/C3="> <field name="ATTR">val</field> <field name="OID">sonoff.0.DVES_7F4BC5.POWER</field> </block> </value> <value name="B"> <block type="logic_boolean" id="rPvNUPX=TJlERRfruZUI"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO1"> <block type="update" id="?HUj-q.UO0rf+@.K1={="> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.SmartVISU.Beleuchtung.Schlafzimmer.Stehlampe</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="=/Y{yMykI(y164Y3l2q0"> <field name="NUM">0</field> </block> </value> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
Also ich möchte an der Stelle nochmals betonen, dass ich nichts gegen die ioBroker VIS habe. Ich versuche lediglich nur meine seit gut 5 Jahren laufende smartVISU weiterhin in vollem Umfang nutzen zu können.
Danke vorab.
Schöne Grüße
Jochen -
Der Befehl aus deiner Visu Ein / Aus geht ja.
Stellt sich die Frage warum deine Visu das Aus sendet.
Teste mal ohne Rückmeldung zur Visu.
Eventuell ist in der Visu 0 und 1 vertauscht. -
Hallo und danke für deine Antwort. 0 und 1 ist nicht vertauscht. Der Aufbau der VISU ist html und css basiert. In diesem Aufbau wird auf vogefertigte Widget bausteine zugegriffen. In diesem Fall auf das basic.stateswitch widget, welches durch nachfolgendes Vorgabenbeispiel beeinflusst werden kann
{{ basic.stateswitch(id, item, type, value, icon, text, color, indicator, item_longpress, value_longpress, value_longrelease) }}
id
unique id for this widget (optional)
item
an item
type
valid types: 'micro', 'mini', 'midi', 'icon', 'text' (optional, default: mini)
value
array of values (optional, default [0,1])
If the item has a value that is not part of the list, the state (icon, text, color) of the last value in the list will be shown.
icon
array of icons (optional, default just if text is empty: control_on_off.svg)
dynamic icons can be used, e.g. icon.light('', '', value_item); please note: these must not be wrapped by apostrophs (')
text
array of texts (optional)
color
array of colors; 'icon1' or e. g. '#f00' for red (optional, default: icon0)
additionally you can use 'hidden' to not diplay at all or 'blank' to make it invisible but preserve the space that would be used.
indicator
activity indicator which is active until response (or a timeout of 3 seconds is reached); pass either a color, 'icon1' or 'blink' (optional)
item_longpress
an item to which a value on longpress is sent (optional)
value_longpress
the value to send on longpress (optional)
If this starts with a + or - sign the value is treated as offset to current stateswitch value.
value_longrelease
the value to send on releasing after a longpress (optional)Dieses sieht im Beispiel meiner Visu wiefolgt aus:
<tr> <td style="width:25%">{{ basic.stateswitch('', 'javascript.0.SmartVISU.Beleuchtung.Kueche.Dunstabzug', 'icon', ['1', '0'], ['light_kitchen_hood.svg', 'light_kitchen_hood.svg'], '', ['icon1', 'icon0']) }}</td> <td align="left">Licht Dunstabzugshaube</td> </tr>
Hierbei benötige ich nur das Item (Datenpunkt in IoBroker), das Type (in dem Fall ein Icon), das Value (1 oder 0 bzw. true oder false), das Icon (Icon Darstellung als svg Datei in dem Fall eine Dunstabzugshaube) und das Color (Farbe des Icon für 0 oder 1 Wert)
Das funktioniert bei Homematic-, Homematic IP-, KNX- und Wemos (über MQTT) Aktoren einwandfrei. Lediglich mit Belkin Wemo (über HAM Adapter) und Sonoff Aktoren leider nicht.
Und ich weiß einfach nicht, wo ich den Fehler suchen soll...
Gruß
Jochen -
Hi,
teste mal ohne Rückmeldung zur Visu im Blockly.
Wenn stabil bei nur Ein liegt das an der Rückmeldung.
Wenn nicht kommt der Befehl aus der Visu.Datenpunkt erzeugen kenne ich nicht.
Dieser ist auch nicht definiert.
Würde ich entfernen und einen Datenpunkt manuel anlegen.Gruß Ralla