NEWS
Blockly Objekt ID auf True/False setzen
-
Hallo zusammen, egal ob ich aktualisiere oder Steuern nutze, er will mir das Objekt hier einfach nicht ändern zwischen True/False.
Muss ich etwas anderes nutzen? danke im Voraus.
Objekt:
on({ id: 'openknx.0.Rückmeldungen.Zentral.Urlaub_Status_1=ja_0=nein' /* Urlaub Status 1=ja 0=nein */, change: 'any' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; if (getObject('openknx.0.Rückmeldungen.Zentral.Urlaub_Status_1=ja_0=nein') == true) { setState('unifi.0.default.devices.74:ac:b9:ae:38:26.port_table.port_6.port_poe_enabled' /* switch poe power */, false); } if (getObject('openknx.0.Rückmeldungen.Zentral.Urlaub_Status_1=ja_0=nein') == false) { setState('unifi.0.default.devices.74:ac:b9:ae:38:26.port_table.port_6.port_poe_enabled' /* switch poe power */, true, true); } console.log('test'); });
-
@memberx
Du musst nicht das ganze Objekt prüfen, sondern "Wert von Objekt" verwenden.Edit:
Geht auch noch deutlich einfacher ... ohne "Falls" usw.
Habe gerade keinen ioBroker da, darum ohne Screenshots:Falls Objekt XYZ wurde geändert (nicht aktualisiert)
=> steuere Switch mit WERTDen Block "Wert" findest Du unter "Trigger".
Er heißt dort noch "Objekt ID" - das kann man dann nach "Wert" ändern. -
@codierknecht vielen Dank
Und nehme ich dann aktualisiere oder steuere?
-
@memberx sagte in Blockly Objekt ID auf True/False setzen:
Und nehme ich dann aktualisiere oder steuere?
Grundregel:
Alle DP von Adaptern werden mit steuere geschrieben.
Alle eigenen DP (unterhalb von0_userdata.0
) mit aktualisiere. -
@codierknecht sagte in Blockly Objekt ID auf True/False setzen:
@memberx
Du musst nicht das ganze Objekt prüfen, sondern "Wert von Objekt" verwenden.Edit:
Geht auch noch deutlich einfacher ... ohne "Falls" usw.
Habe gerade keinen ioBroker da, darum ohne Screenshots:Falls Objekt XYZ wurde geändert (nicht aktualisiert)
=> steuere Switch mit WERTDen Block "Wert" findest Du unter "Trigger".
Er heißt dort noch "Objekt ID" - das kann man dann nach "Wert" ändern.In seinem Fall: steuere Switch mit nicht Wert
Er will ja bei Urlaub true, den switch mit false setzen und umgekehrt.
-
@schmakus
Wer lesen kann, ist klar im Vorteil -
@schmakus nicht ganz, Switch false setzen wenn Urlaub True ist, Urlaub wird aber über KNX bzw. Server gesetzt.
-
@memberx Ja, meine Aussage passt doch.
Du kannst sogar den Binde-Block nehmen oder dir einen Alias erstellen.
Für so einfache "Schaltungen" ist eigentlich ein Alias das idealste.Beim alias wäre dann bei wert für Lesen:
!val
-
@schmakus muss ich mir mal anschauen. Kenne die Befehle noch nicht, noch viel Neuland bei mir
-
-
@codierknecht was genau ist der Vorteil davon gegenüber falls dann?
-
@memberx
Du sparst Dir ein Script. -
Versteh nicht ganz, wie mir das ein Script spart? Soweit ich jetzt gelesen hab, ist der Alias doch eher ein Replacement für zentralere Datenpunkte, damit man bspw. nur die Datenquelle ändert wenn nötig, anstatt überall die Quelle anzupassen?!
Oder wieso spare ich mir in meinem Fall ein Script?
-
@memberx sagte: wieso spare ich mir in meinem Fall ein Script?
Um den Unifi-Datenpunkt zu steuern, wird natürlich ein Skript benötigt:
Der Block "nicht" wandelt 1 in false und 0 in true.
-
@paul53 muss dann wirklich nur nicht wert rein? Nicht mehr spezifisch Wert von Objekt Urlaub?
-
@memberx sagte: muss dann wirklich nur nicht wert rein?
Ja,
Wert
(findet man unter "Trigger") enthält den Wert des Trigger-Datenpunktes. -
-
@memberx sagte in Blockly Objekt ID auf True/False setzen:
Versteh nicht ganz, wie mir das ein Script spart? Soweit ich jetzt gelesen hab, ist der Alias doch eher ein Replacement für zentralere Datenpunkte, damit man bspw. nur die Datenquelle ändert wenn nötig, anstatt überall die Quelle anzupassen?!
Oder wieso spare ich mir in meinem Fall ein Script?
Weil man mit einem Alias nicht nur, wie du beschreibst, ein Replacement ist, sondern man kann damit auch Werte des Quelldatenpunkts manipulieren (verändern, berechnen, usw) und andersrum.
Beispiel: mein Quelldatenpunkt liefert Watt und ich möchte aber Kilowatt, dann erstelle ich einen Alias und füge als Formel zum Lesen
val * 1000
ein. Somit benötige ich kein Script, weil alles der Alias macht.Beispiel 2:
Ich habe einen Quelldatenpunkt, welcher als StringON
oderOFF
hat. Ich möchte aber woanders in irgendwelchen Scripten nurtrue/false
verwenden.
Dann einen Alias des typsboolean
. Für lesen:val === "ON" ? true : false
Für schreiben:val ? "ON" : "OFF"
Somit habe ich eigene Datenpunkte ohne ein Script.
-
@schmakus sagte: Formel zum Lesen val * 1000
val / 1000
oder mit Runden auf 2 Nachkommastellen
Math.round(val / 10) / 100
-
@paul53 Und wie könnte folgendes man es angehen:
Vor dem Urlaub ist ser Unifi AP AUS (aus irgendeinen Grund)
Wenn Urlaub True -> Unifi AP POE AUSSCHALTEN
Wenn Urlaub dann geändert auf FALSE -> Status wie vorher wiederherstellen, also wenn er vorher AN war wieder an, wenn er AUS war, wieder aus