NEWS
JavaScript für Sayit Adapter
-
Hallo zusammen,
ich bräuchte mal Hilfe bei JavaScript (Wenn das Powershell wäre, hätte ich keine Probleme).Also, ich verwende den Sayit Adapter in Verbindung mit dem Alarm Adapter. Das funktioniert sehr gut.
Jetzt habe ich versucht mal ein JavaScript zu schreiben, das dann losplappert, wenn die Garage auf oder zu geht. Leider kommt da kein Ton raus. Auch der Datenpunkt "sayit.0.tts.text" wird nicht befeuert. Mit Blockly hatte ich auch kein Erfolg.
Das Anfängerscript:var idSayIt = "sayit.0.tts.text"; var idGarage = "0_userdata.0.Haus.Garantor"; on({id: "0_userdata.0.Haus.Garantor" , change: "any"}, function (obj) { var offen = "0"; var zu = "1"; if( "offen" ){ setState (idSayIt, "100;Achtung Warnung! Garagentor ist offen " /*media.tts.text*/); } else if ( "zu" ){ setState (idSayIt, "100;Achtung Warnung! Garagentor ist zu " /*media.tts.text*/); } });
Da kennt sich doch bestimmt jemand aus. Für Hilfe wäre ich dankbar.
Grüße -
@maxtor62
Die Garagentor-ID lautet tatsächlich "0_userdata.0.Haus.Garantor"?
Dann sollte es so funktionieren:const idSayIt = "sayit.0.tts.text"; const idGarage = "0_userdata.0.Haus.Garantor"; on(idGarage, function (dp) { // 0 = "offen", 1 = "zu" setState (idSayIt, "100;Achtung Warnung! Garagentor ist " + dp.state.val ? "zu" : "offen"); });
-
Hey, erst mal vielen Dank für Deine Hilfe. Natürlich hatte ich da einen Tippfehler drin.
Na endlich quatscht das Teil mal mit mir, super. Jetzt kommt bei state 1 oder 0 immer "zu"
-
@maxtor62 sagte: Jetzt kommt bei state 1 oder 0 immer "zu"
Sind das Zahlen oder Strings?
Skript zeigen! -
das ist der Datenpunkt, der entweder 1 oder 0 ist.
{ "common": { "name": "Garagentor", "desc": "Manuell erzeugt", "role": "value", "type": "number", "read": true, "write": true, "def": "" }, "type": "state", "native": {}, "_id": "0_userdata.0.Haus.Garagentor", "acl": { "object": 1636, "state": 1636, "owner": "system.user.stefan", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1693219286201 }
und das ist das Script
const idSayIt = "sayit.0.tts.text"; const idGarage = "0_userdata.0.Haus.Garagentor"; on(idGarage, function (dp) { // 0 = "offen", 1 = "zu" setState (idSayIt, "100;Achtung Warnung! Garagentor ist " + dp.state.val ? "Garagentor ist zu" : "Garagentor ist offen"); });
Ich hab mal Testweise das Script für eien anderen Datenpunkt genommen. Der ist "true oder "false"
const idSayIt = "sayit.0.tts.text"; const idFenster= "zigbee.0.00158d0008a6e44c.opened"; on(idFenster, function (dp) { // true = "offen", false = "zu" setState (idSayIt, "100;Achtung Warnung! Küchenfenster ist " + dp.state.val ? "Küchenfenster ist zu" : "Küchenfenster ist offen"); });
Kommt auch immer "Das Küchenfenster ist zu"
-
@paul53
jetzt funktioniert es. Danke Dir.const idSayIt = "sayit.0.tts.text"; const idFenster= "zigbee.0.00158d0008a6e44c.opened"; on(idFenster, function (dp) { // true = "offen", false = "zu" setState (idSayIt, + dp.state.val ? "Küchenfenster ist offen" : "Küchenfenster ist zu"); });
-
@maxtor62 sagte: Kommt auch immer "Das Küchenfenster ist zu"
Hast recht. Setze eine Klammer:
const idSayIt = "sayit.0.tts.text"; const idGarage = "0_userdata.0.Haus.Garagentor"; on(idGarage, function (dp) { // 0 = "offen", 1 = "zu" setState (idSayIt, "100;Achtung Warnung! Garagentor ist " + (dp.state.val ? "zu" : "offen")); });