NEWS
Regensensr Blockly funtioniert nur sporadisch
-
Hallo zusammen,
ich stehe mal wieder auf dem Schlauch und würde euch um Unterstützung bitten.
Ausganglage. Ich habe an 4 Fensterbrettern je einen Wassersensor der mir melden soll wenn es anfängt zu regnen und ich die Fenster schließen soll. (Ist für die Nacht gedacht, Tagsüberklappt das auch ohne Blockly)
Dann möchte ich eine Telegramnachricht bekommen.
2 Echo Show sollen auf lautstärke 100 geschaltet werden und einen Ton abgeben so lange bis ich das / die Fenster geschlossen habe und die Sensoren wieder im trocknen sind, sprich wieder false ausgeben.
Danach sollen die Echos wieder auf Lautstärke 2 geschaltet werden.
............das wars dann.Das skript hat aber wohl einen Fehler. Mal startet es nicht, mal startet es ich bekomme eine Telegram Nachricht aber kein Echo geht los, mal kommt eine Meldung, die Echos gehen los aber hören nicht mehr auf selbst wenn die Sensoren schon nichts mehr melden.
Kann mir bitte jemand weiter helfen?
Es grüßt euch Duffy
-
@duffy stelle zuerst mal auf „wurde geändert“ um. Aktuell wird nix gestoppt, weil nur auf wahr getriggert wird.
Als nächstes solltest noch beim Falls mit abfragen, ob das Intervall noch nicht läuft mit „nicht Intervall“, da sonst mehrmals getriggert wird, wenn mehrere Sensoren melden. -
@duffy
Man kannWert
so nicht bei einem Mehrfach-Trigger verwenden, sondern man muss die Werte der 4 Datenpunkte per ODER verknüpfen.
Wenn auf "ist wahr" getriggert wird, wird der sonst-Zweig nie erreicht. Der Trigger muss "wurde geändert" sein. Außerdem:@schmakus sagte in Regensensr Blockly funtioniert nur sporadisch:
abfragen, ob das Intervall noch nicht läuft mit „nicht Intervall“, da sonst mehrmals getriggert wird, wenn mehrere Sensoren melden.
-
@schmakus sagte in Regensensr Blockly funtioniert nur sporadisch:
Vielen Dank für deine Schnelle Antwort. Kannst du mir bitte och sagen wir das zu bewerkstelligen ist?
Als nächstes solltest noch beim Falls mit abfragen, ob das Intervall noch nicht läuft mit „nicht Intervall“, da sonst mehrmals getriggert wird, wenn mehrere Sensoren melden.
Ich bin Anfänger und habe da noch so meine Probleme ;-(
Vile Grüße Duffy
-
@duffy
Prinzip: -
Danke für deinen Hinweis. Ist es also nicht so das sich "Wert" (wie bekommst du das so schön farbig hin?) auf den ganzen "Falls Objekt Block bezieht? Ich dachte wenn einer der 4 Regensensoren True ist dann ist der ganze "Falls Objekt Block" True.
Aber gut, wenn ich bei "falls" alle 4 mit "oder" abfragen muß werde ich das gerne mal testen.
Danke dir.Gruß Duffy
-
@duffy sagte: wenn einer der 4 Regensensoren True ist dann ist der ganze "Falls Objekt Block" True.
Beispiel: Wenn 3 Sensoren Regen melden und einer davon wird trocken (
Wert
= false), wird das Intervall gestoppt. -
Das wäre nicht im Sinne des "Erfinders"
Ich habe es jetzt mal umgestrickt aber jetzt kommr gar gar nichts mehr
Schaust dir das bitte noch mal an?Gruß Duffy
-
-
@duffy sagte: Schaust dir das bitte noch mal an?
Trigger?
Das muss so funktionieren. Damit nur ein Telegramm gesendet wird, packe das auch in "falls nicht Intervall". -
Dampfe es gerade ein kann ja die anderen Sachen später vielleicht ergänzen.
-
Also, ich habe es auf den Hinweis von DJMarc75 ensprechend genaus so verucht zu machen wie in deiner Vorlage.
Nun ist es so:Wenn einer der Sensoren true meldet geben beide Echos nur einen kurzen Ton von sich (der Ton den Alexa auch bei anderen aktivitäten von sich gibt, also nicht der Alarmton) und bei Telegram kommt nichts mehr.
Hier noch mal ein Screenshot:
Gruß Duffy
-
@duffy sagte: bei Telegram kommt nichts mehr.
Poste bitte den erzeugten Javascript-Code ohne die letzte Zeile in Code tags.
-
Na ob ich das hinbekomme? Ich gebe mein Bestes:
var Intervall;
on({id: [].concat(['alias.0.Regensensoren.Regensensor_1.Regensensor_1']).concat(['zigbee.0.00158d000944d15d.detected']).concat(['alias.0.Regensensoren.Regensensor_3.Regensensor_3']).concat(['alias.0.Regensensoren.Regensensor_4.Regensensor_4']), change: "ne"}, async function (obj) {
if (getState("alias.0.Regensensoren.Regensensor_1.Regensensor_1").val || getState("alias.0.Regensensoren.Regensensor_2.Regensensor_2").val || getState("alias.0.Regensensoren.Regensensor_3.Regensensor_3").val || getState("alias.0.Regensensoren.Regensensor_4.Regensensor_4").val) {
if (!Intervall) {
sendTo("telegram", "send", {
text: 'Fenster schließen es regnet sonst rein!!'
});
Intervall = setInterval(async function () {
setState("alexa2.0.Echo-Devices.G0913L05927303EE.Commands.sound"/sound/, 'amzn_sfx_scifi_alarm_01');
setState("alexa2.0.Echo-Devices.G091MK061202056V.Commands.sound"/sound/, 'amzn_sfx_scifi_alarm_01');
}, 3000);
}
} else {
(function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
}
});Ich hoffe du kannst was erkennen und vor allem das es das Richtige ist.
Gruß Duffy
-
@duffy sagte: Ich hoffe du kannst was erkennen
In Code tags (oben
</>
) wäre es besser lesbar, aber ich kann es lesen und keinen Fehler finden.EDIT: Starte mal die Javascript-Instanz neu.
-
@duffy sagte in Regensensr Blockly funtioniert nur sporadisch:
geben beide Echos nur einen kurzen Ton von sich (der Ton den Alexa auch bei anderen aktivitäten von sich gibt, also nicht der Alarmton)
die Blöcke mit SOUND bitte durch folgende ersetzen:
jeweils der SpeakDP vom EchoDevice und als Textwert dann folgendes eintragen:
100;<audio src="soundbank://soundlibrary/scifi/amzn_sfx_scifi_alarm_01"/>
die 100 gefolgt von ; gibt die Lautstärke an, welche nur sekundär für diesen Befehl gesetzt wird.
Den Wert NACH dem ; kannst Du bequem aus folgendem Link auswählen:https://developer.amazon.com/en-US/docs/alexa/custom-skills/ask-soundlibrary.html
Hab grad mal Deinen Alarmton getestet... das wäre ein Kündigungsgrund
-
Hi,
jetzt geht es.
Es lag wohl daran das ich die Datenpunkte der Sensoren aus einem Alias bezogen habe. Jetzt habe ich die Original Datenpunkte verwendet und siehe da es funktioniert. Ich habe keine Ahnung warum die Alias Datenpunkte manchmal Probleme machen ist mir auch schon mal davor passiert deshalb dachte ich gerade ich muß das mal mit den Originaldatenpunkten versuchen.
Bemerkenswert ist ja auch das die Echos ja auf die Aliasdatenpunkte reagiert haben, also richtig sind sie gewesen nur die Ausführung an sich hat nicht geklappt. (Vielleicht ist das ja ein Bug)Auf jeden Fall vielen Dank für Deine Mühe und Geduld.
Ach noch eins, "In Code tags (oben </>)" wo hätte ich die finden sollen? Im Skripte Adapter, Also Blockly?
Gruß Duffy
-
@duffy sagte: Mal startet es nicht, mal startet es ich bekomme eine Telegram Nachricht aber kein Echo geht los,
Das hätte auch mit dem ursprünglichen Blockly nicht passieren dürfen. Du hast offenbar an anderer Stelle ein Problem.
-
@duffy sagte: "In Code tags (oben </>)" wo hätte ich die finden sollen? Im Skripte Adapter, Also Blockly?
Über dem Editor-Fenster im Forum (5. Symbol von links).
-
Dein Vorschlag hört sich verlockend an, wäre schön wenn die Lautstärke nur für den Alarm so wäre.
Der Link öffnet sich leider nicht.
Habe es gerade mal so gemacht wie in DEINER
Vorlage, sehr schön es klappt.
Danke auch dir für Deine Mühe.
Gruß Duffy