@negalein
ich glaube in Zeile 66 fehlt eine geschweifte schließende Klammer
}});
Kommt davon wenn man es mit einem Texteditor macht und sich dann verklammert, äh zählt... @Negalein hast du im Blockly von "aktualisiert" auf "geändert" umgestellt?
Beobachtung:
Script Start ---> DP wird befüllt ---> Alexa plappert
00:21 ---> DP wird geleert ---> Alexa plappert
00:42 ---> DP wird befüllt ---> Alexa plappert
01:03 ---> DP wird geleert ---> Alexa plappert
usw. bis der Einsatz beendet ist.
ja, das habe ich auch, wenn es mehr als einen Einsatz Zeitgleich gibt, je nach dem welchen Trigger Du nun aktuell verwendest.
Du hast gesehen das 0_userdata.0 eingestellt war im Script ?
Trigger müßte im Blockly nun wieder der DP neue Meldung sein (true/false) dann sollte das nicht mehr passieren...
das habe ich auch, wenn es mehr als einen Einsatz Zeitgleich gibt, je nach dem welchen Trigger Du nun aktuell verwendest.
Du hast gesehen das 0_userdata.0 eingestellt war im Script ?
es gab da nur 1 Einsatz.
Trigger hab ich den neuen verwendet.
ich teste gerade zwei verschiedene Sachen. Ich habe mal Schardenberg im Script eingestellt. Da passiert gerade folgendes beim Trigger auf die Ereignisse:
14:14:23.208 info javascript.0 (4461) script.js.99_Test.Feuerwehr-negalein: wurde geändert: 30;Achtung VERKEHRSUNFALL EINGEKLEMMTE PERSON, Feuerwehreinsatz in Urfahr-Umgebung - ST. GOTTHARD IM MÜHLKREIS, Alarmstufe 2
14:14:23.209 info javascript.0 (4461) script.js.99_Test.Feuerwehr-negalein: wurde geändert: 30;Achtung VERKEHRSUNFALL AUFRÄUMARBEITEN, Feuerwehreinsatz in Vöcklabruck - UNGENACH, Alarmstufe 1
14:14:23.210 info javascript.0 (4461) script.js.99_Test.Feuerwehr-negalein: wurde geändert: 30;Achtung BRANDMELDEALARM, Feuerwehreinsatz in Urfahr-Umgebung - GRAMASTETTEN, Alarmstufe 1
14:14:23.210 info javascript.0 (4461) script.js.99_Test.Feuerwehr-negalein: wurde geändert: 30;Achtung TECHNISCHER EINSATZ KLEIN, Feuerwehreinsatz in Braunau - BRAUNAU AM INN, Alarmstufe 1
Der andere DP (neue Meldung) steht von Beginn an auf true, aber da kommt dann nichts, weil der ja true bleibt, also würde man wahrscheinlich nur die erste Ansage mit dem ersten Einsatz (wenn vorher nichts war) mitbekommen. Wenn dann weitere Einsätze dazu kommen und der DP noch true ist, weil die Einsätze noch nicht beendet sind, dann käme keine Ansage....denke ich. (und im DP mit den json/Ereignissen steht dann nur das zuletzt eingelesene, von den aktuell vier Einsätzen) Geht also so auch nicht. @SBorg
kann man alle aktuell laufenden Einsätze in den DP einlesen ? (im Moment steht da immer nur einer drinn obwohl es aktuell mehrere gibt)
jetzt hast mich erschreckt. Dachte, Schardenberg, und bei mir kommt nichts?
Dann seh ich im Log von dir, dass Schardenberg garnicht dabei ist.
Puhh, dachte schon das Script geht nicht.
// V0.1.0 10.08.2021 SBorg
let Filter0 = /Schärding.*/ig; //RegEx (hier alle Meldungen
let Filter1 = /Wernstein*/ig; //RegEx (zB. Brandwache, Bezirk...)
let DP = "0_userdata.0.Feuerwehr"; //Datenpunkt
const Zeitplan = "21 * * * * *"; //jede Minute bei 23 Sekunden (individuell abändern; es sollte nicht jeder minütlich bei genau 23 Sekunden abfragen!)
//Datenpunkte anlegen
createState(DP+'.RSS_Meldung', '', { name: "Feuerwehreinsatzmeldungen", type: "json", role: "state" });
createState(DP+'.neuer_Alarm', '', { name: "neue Meldung", type: "boolean", role: "state" });
//scheduler
schedule(Zeitplan, polldata);
polldata(); //einmalig direkt beim Start Daten holen
function polldata() {
var FeedParser = require('feedparser');
var request = require('request'); // for fetching the feed
var req = request('http://intranet.ooelfv.at/webext2/rss/rss_laufend.xml');
var feedparser = new FeedParser();
req.on('error', function (error) {
// handle any request errors
});
req.on('response', function (res) {
var stream = this; // `this` is `req`, which is a stream
if (res.statusCode !== 200) { this.emit('error', new Error('Bad status code')); }
else { stream.pipe(feedparser); }
});
feedparser.on('error', function (error) {
// always handle errors
});
feedparser.on('readable', function () {
// This is where the action is!
var stream = this; // `this` is `feedparser`, which is a stream
var meta = this.meta; // **NOTE** the "meta" is always available in the context of the feedparser instance
var item;
while (item = stream.read()) {
if (item.description.search(Filter0) != -1 || item.description.search(Filter1) != -1) {
let tmp = (item.description.split("<br>"));
let tmp1= (tmp[1].split(", "));
let tmp2= (tmp[2].split(" "));
tmp1[1] = tmp1[1].replace(/[a-z,A-Z,:, ]/ig, "");
tmp2[0] = tmp2[0].replace(/[a-z,A-Z,:, ]/ig, "");
tmp2[1] = tmp2[1].replace("- ", "Uhr");
setState(DP+'.RSS_Meldung', JSON.stringify([{ 'Titel': item.title, 'Feuerwache': tmp[0], 'Einsatz': tmp1[0], 'Alarmstufe': tmp1[1], 'Feuerwehren': tmp2[0], 'Zeit': tmp2[1], 'Bezirk': tmp[3] }]));
console.log("Einsatzmeldung vorhanden...");
setState(DP+'.neuer_Alarm', true);
} else {
if (getState(DP+'.RSS_Meldung').val) {
setState(DP+'.neuer_Alarm', false); //DP leeren
setState(DP+'.RSS_Meldung', ''); //DP leeren
}
}
}});
} //end polldata
i dont know.
Ich schätze das von deinem Screenshot.
Eigentlich egal welches Blockly, weil das Ergebnis nicht das ist was Ihr haben wollt. Deshalb habe ich hier gefragt ob man alle laufenden Meldungen einlesen kann. Es kann ja sein, das es auch bei Euch mehrere Meldungen gibt.
Der andere DP (neue Meldung) steht von Beginn an auf true, aber da kommt dann nichts, weil der ja true bleibt, also würde man wahrscheinlich nur die erste Ansage mit dem ersten Einsatz (wenn vorher nichts war) mitbekommen. Wenn dann weitere Einsätze dazu kommen und der DP noch true ist, weil die Einsätze noch nicht beendet sind, dann käme keine Ansage....denke ich. (und im DP mit den json/Ereignissen steht dann nur das zuletzt eingelesene, von den aktuell vier Einsätzen) Geht also so auch nicht. @SBorg
kann man alle aktuell laufenden Einsätze in den DP einlesen ? (im Moment steht da immer nur einer drinn obwohl es aktuell mehrere gibt)
Also ein Beispiel:
Trigger auf Datenpunkt neue Meldung (true/false)
aktuell gibt es keine Meldung, DP ist dann false. Jetzt kommt eine Meldung rein, DP geht auf true, die Ansage erfolgt. Der Einsatz läuft noch, also bleibt der DP true. Nun kommt ein zweiter Einsatz dazu, der DP ist immer noch true, es erfolgt keine neue Ansage.
Beispiel 2
Trigger auf Datenpunkt Feuerwehreinsatzmeldung
aktuell gibt es keine Meldung, DP ist dann leer. Jetzt kommt eine Meldung rein, DP wird gefüllt und die Ansage erfolgt. Der Einsatz läuft noch, also bleibt der DP gefüllt und ändert sich nicht und es kommt keine neue Ansage durch das Polling. Nun kommt ein zweiter Einsatz dazu, der DP wird neu geschrieben, erkannt werden laut Log beide Einsätze. Beim nächsten polling steht der zu letzt geschriebene Einstz im DP. Nun wird erst der erste noch laufende Einsatz in den DP geschrieben und eine Millisekunde später der zweite Einsatz und nur der steht dann im DP. Da sich der Datenpunkt im Millisekundenbereich geändert hat, erfolgt dann bei dieser Variante im eingestellten Pollingintervall eine Ansage.
Hier noch was zum Log beobachten. Test mit beiden Datenpunkten und unterschiedlichen Triggermethoden.
// V0.1.0 10.08.2021 SBorg
let Filter0 = /.*/ig; //RegEx (hier alle Meldungen
let Filter1 = /Schärding/ig; //RegEx (zB. Brandwache, Bezirk...)
let DP = "0_userdata.0.Feuerwehr"; //Datenpunkt
const Zeitplan = "*/15 * * * * *"; //alle 15 Sekunden!)
Website
Beispiel Log bei Blockly Neustart
10.8.2021, 22:46:51.177 [info ]: javascript.0 (4461) Stop script script.js.99_Test.Feuerwehr-negalein
10.8.2021, 22:46:51.232 [info ]: javascript.0 (4461) Start javascript script.js.99_Test.Feuerwehr-negalein
10.8.2021, 22:46:51.233 [info ]: javascript.0 (4461) script.js.99_Test.Feuerwehr-negalein: registered 4 subscriptions and 0 schedules
10.8.2021, 22:47:00.199 [info ]: javascript.0 (4461) script.js.99_Test.Feuerwehr-negalein: Trigger 1 auf Einsatzmeldungen: 30;Achtung BRAND WOHNHAUS, Feuerwehreinsatz in Linz-Land - LEONDING, Alarmstufe 1
10.8.2021, 22:47:00.199 [info ]: javascript.0 (4461) script.js.99_Test.Feuerwehr-negalein: Trigger 3 auf DP neue Meldung ist wahr: 30;Achtung BRAND WOHNHAUS, Feuerwehreinsatz in Linz-Land - LEONDING, Alarmstufe 1
10.8.2021, 22:47:00.199 [info ]: javascript.0 (4461) script.js.99_Test.Feuerwehr-negalein: Trigger 2 auf DP neue Meldung: 30;Achtung BRAND WOHNHAUS, Feuerwehreinsatz in Linz-Land - LEONDING, Alarmstufe 1
10.8.2021, 22:47:00.199 [info ]: javascript.0 (4461) script.js.99_Test.Feuerwehr-negalein: Trigger 4 auf DP neue Meldung ist wahr: 30;Achtung BRAND WOHNHAUS, Feuerwehreinsatz in Linz-Land - LEONDING, Alarmstufe 1
10.8.2021, 22:47:00.200 [info ]: javascript.0 (4461) script.js.99_Test.Feuerwehr-negalein: Trigger 1 auf Einsatzmeldungen: 30;Achtung SIRENENPROGRAMM FEUER VON FW AUSGELÖST, Feuerwehreinsatz in Eferding - ASCHACH AN DER DONAU, Alarmstufe 1
10.8.2021, 22:47:00.200 [info ]: javascript.0 (4461) script.js.99_Test.Feuerwehr-negalein: Trigger 3 auf DP neue Meldung ist wahr: 30;Achtung SIRENENPROGRAMM FEUER VON FW AUSGELÖST, Feuerwehreinsatz in Eferding - ASCHACH AN DER DONAU, Alarmstufe 1
10.8.2021, 22:47:00.201 [info ]: javascript.0 (4461) script.js.99_Test.Feuerwehr-negalein: Trigger 1 auf Einsatzmeldungen: 30;Achtung ÖLSPUR, ÖLAUSTRITT, Feuerwehreinsatz in Gmunden - LAAKIRCHEN, Alarmstufe 1
10.8.2021, 22:47:00.202 [info ]: javascript.0 (4461) script.js.99_Test.Feuerwehr-negalein: Trigger 3 auf DP neue Meldung ist wahr: 30;Achtung ÖLSPUR, ÖLAUSTRITT, Feuerwehreinsatz in Gmunden - LAAKIRCHEN, Alarmstufe 1
10.8.2021, 22:47:15.189 [info ]: javascript.0 (4461) script.js.99_Test.Feuerwehr-negalein: Trigger 1 auf Einsatzmeldungen: 30;Achtung BRAND WOHNHAUS, Feuerwehreinsatz in Linz-Land - LEONDING, Alarmstufe 1
10.8.2021, 22:47:15.189 [info ]: javascript.0 (4461) script.js.99_Test.Feuerwehr-negalein: Trigger 3 auf DP neue Meldung ist wahr: 30;Achtung BRAND WOHNHAUS, Feuerwehreinsatz in Linz-Land - LEONDING, Alarmstufe 1
10.8.2021, 22:47:15.190 [info ]: javascript.0 (4461) script.js.99_Test.Feuerwehr-negalein: Trigger 1 auf Einsatzmeldungen: 30;Achtung SIRENENPROGRAMM FEUER VON FW AUSGELÖST, Feuerwehreinsatz in Eferding - ASCHACH AN DER DONAU, Alarmstufe 1
10.8.2021, 22:47:15.190 [info ]: javascript.0 (4461) script.js.99_Test.Feuerwehr-negalein: Trigger 3 auf DP neue Meldung ist wahr: 30;Achtung SIRENENPROGRAMM FEUER VON FW AUSGELÖST, Feuerwehreinsatz in Eferding - ASCHACH AN DER DONAU, Alarmstufe 1
10.8.2021, 22:47:15.191 [info ]: javascript.0 (4461) script.js.99_Test.Feuerwehr-negalein: Trigger 1 auf Einsatzmeldungen: 30;Achtung ÖLSPUR, ÖLAUSTRITT, Feuerwehreinsatz in Gmunden - LAAKIRCHEN, Alarmstufe 1
10.8.2021, 22:47:15.191 [info ]: javascript.0 (4461) script.js.99_Test.Feuerwehr-negalein: Trigger 3 auf DP neue Meldung ist wahr: 30;Achtung ÖLSPUR, ÖLAUSTRITT, Feuerwehreinsatz in Gmunden - LAAKIRCHEN, Alarmstufe 1
Edit: Was mir noch einfällt, in dem Bild von der Website steht in diesem Beispiel:
laufende Einsätze 3
Wird das mit ausgelesen ? Bzw. kann man das in einen zusätzlichen DP schreiben ?