NEWS
Luftfeuchtigkeit zu hoch Skript
-
Hallo zusammen,
vielleicht könnt ihr mir weiter helfen. Ich habe versucht ein Blockly Skript zu schreiben was über Alexa ansagt
wenn man zB. geduscht hat das man das Fenster öffnen sollte. Grundlegend klappt es auch nur das 10
mal wiederholen geht nicht. Vielleicht kann mir einer sagen was ich Falsch gemacht habe.
Herzlichen Dank schon mal im voraus.
3893_problem.jpg -
Hast du mal versucht ohne den Haken bei „löschen falls läuft“ ?
Gesendet von iPhone mit Tapatalk
-
Es werden Trigger benötigt. Vorschlag:
-
Super, herzlichen Dank ich versuch das mal und meld mich dann noch mal.
-
Vorheriger Wert, Wert und cnt finde ich nicht. Muss ich unter Variablen den Intervall Baustein einfach in zB "Wert" umbenennen ?
-
Vorheriger Wert, Wert und cnt finde ich nicht. `
Wert und vorheriger Wert sind Datenpunkteigenschaften (unter Trigger)
Die Variable cnt ist eine neue Variable (Ursprung: setze etwas auf)
-
So das Skript läuft nur glaube ich der Intervall für die 10 mal Wiederholungen sind zu schnell für Alexa,
die Sprachausgabe dauert ca 3 sek. In der Form kommt die Sachausgabe nur 1 mal an.
Hier noch mal das umsetzte Skript…
3893_1.jpg -
Wieso zu schnell? So wie ich das Skript verstehe, erfolgt alle 2 Minuten eine Sprachausgabe. Dabei ist die Verzögerung von drei Sekunden unnötig. Nach 10 Ausgaben (20 Minuten) oder falls das Fenster geöffnet wurde, erfolgt keine weitere Ausgabe.
-
Ok dann habe ich es jetzt verstanden danke.
-
Hi,
ich habe vor ein ähnliche Skript zu schreiben.
Und zwar möchte ich ein pushover senden wenn der PI für 10s eine gewisse Temperatur überschritten hat.
Zu testzwecken habe ich mal 30°C gewählt.
Leider bekomme ich keine Pushover, obwohl der Pi über 30°C hat.
Habe ich einen Denkfehler oder Programmierfehler?
Mein Skript sieht so aus:
-
Füg mal in den Bedingungen jeweils Debug-Ausgaben ein, damit du nachvollziehen kannst, in welcher Reihenfolge das Skript wie abläuft.
-
Mein Skript sieht so aus: `
Die Variable PiZuHeiß und alles was damit zusammen hängt ist unnötig. Einfach die Pushover-Meldung in die 'falls Zähler >= 10'-Abfrage setzen, statt unten eine weitere Abfrage durchzuführen sollte reichen. -
Kurze Rückmeldung:
ich hatte gesehen dass der Wert soc.temp vom rpi2 Adapter keine "num" ist, sondern "value".
Habe dann einfach ne Konvertierung eingefügt… Läuft!
Eure Änderungen habe ich auch noch umgesetzt.
(Die debug Ausgaben habe ich wieder entfernt)
Danke euch.
-
Hi,
ich habe das auch mal nachgebaut aber es funktioniert nicht.
Kann jemand meinen Fehler entdecken.
-
Hi,
noch eine Verständnisfrage.
bezieht sich der "WERT" auf den Trigger des Objektes.
-
bezieht sich der "WERT" auf den Trigger des Objektes.
Wert und vorheriger Wert sind Eigenschaften des Trigger-Datenpunktes; es sind keine Variablen (gleiche Farbe).
-
ok,
das konnte ich mir denken.
Kannst du mir sagen warum mein script nicht läuft.
Was habe ich denn da falsch gemacht?
Eigentlich müsste es funzen
-
Kannst du mir sagen warum mein script nicht läuft.
Nein, ich kann keinen Fehler entdecken. Hoffentlich hast Du es nicht unter der Gruppe global erstellt ? Falls doch, dann ändere es; falls nicht, dann poste bitte den Javascript-Code ohne die letzte Zeile in Code tags.
EDIT: Den Trigger auf die Luftfeuchte ändere besser auf "wurde geändert", damit nicht unnötig oft getriggert wird.
-
Hi,
hier der Code es ist in der Gruppe Common.
var cnt, Intervall; on({id: "hm-rpc.0.NEQ1804131.1.HUMIDITY"/*Raumthermostat Badezimmer.HUMIDITY*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("hm-rpc.0.OEQ0427990.1.STATE").val == false && (obj.state ? obj.state.val : "") >= 55 && (obj.oldState ? obj.oldState.val : "") < 55) { setStateDelayed("alexa2.0.Echo-Devices.G090LF1181350LT7.Commands.speak"/*speak*/, 'Fenster öffnen und Badezimmer Tür schließen', 3000, false); console.log('test'); cnt = 0; Intervall = setInterval(function () { setStateDelayed("alexa2.0.Echo-Devices.G090LF1181350LT7.Commands.speak"/*speak*/, 'Fenster öffnen und Badezimmer Tür schließen', 3000, false); cnt = (typeof cnt == 'number' ? cnt : 0) + 1; if (cnt >= 10) { (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})(); } }, 120000); } }); on({id: "hm-rpc.0.OEQ0427990.1.STATE"/*Fenster Badezimmer TFK.STATE*/, val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})(); });
-
Auch im Javascript-Code sind keine Fehler zu erkennen. Gibt das Skript keinen Log "test" aus, wenn sich die Luftfeuchte von < 55 % auf >= 55 % ändert und das Fenster geschlossen ist ? Wie testet Du die Funktion ?