NEWS
[gelöst] Script Überwachung Temperatur und Meldung an Telegram
-
Hallo zusammen,
bin ganz stolz und habe mein erstes Blockly geschrieben - und es sogar vorher geschafft, Telegram ans Laufen zu bekommen (wofür auch immer das Passowort sein soll, was man da einträgt. Muss das nirgends in Telegram reinschreiben, damit ich Zugriff auf meinen Bot erhalte).
Nun möchte ich gern, dass wie bei mir im Beispiel ich nicht immer im festgelegten Intervall eine Meldung erhalte, sondern erst, wenn der Meldewert auch mal wiedr überschritten wurde (bei mir 18 Grad Celsius).
Aktuell sieh mein Blockly wie folgt aus:
Ziel:
-
Abfrage alle 15 Minuten (600.000 ms)
-
WENN Temperatur unter 18 Grad, DANN EINE Meldung an Telegram
-
WENN Temperatur wieder über 18 Grad, dann wieder von vorne mit der Überwachung beginnen
Ich hoffe ich muss hierfür nicht manuell irgendwie manuell Variablen erstellen (noch keine Ahnung von) und muss diese dann irgendwie befüllen…würde das gern alles schön im Blockly realisieren
Danke euch schon mal und Grüße,
Thorsten
-
-
Hallo zusammen,
bin ganz stolz und habe mein erstes Blockly geschrieben - und es sogar vorher geschafft, Telegram ans Laufen zu bekommen (wofür auch immer das Passowort sein soll, was man da einträgt. Muss das nirgends in Telegram reinschreiben, damit ich Zugriff auf meinen Bot erhalte). `
Na super !
Ziel:
-
Abfrage alle 15 Minuten (600.000 ms)
-
WENN Temperatur unter 18 Grad, DANN EINE Meldung an Telegram
-
WENN Temperatur wieder über 18 Grad, dann wieder von vorne mit der Überwachung beginnen
Ich hoffe ich muss hierfür nicht manuell irgendwie manuell Variablen erstellen (noch keine Ahnung von) und muss diese dann irgendwie befüllen…würde das gern alles schön im Blockly realisieren `
"- Abfrage alle 15 Minuten (600.000 ms)" ==> nimm den block zeitplan und fuere es alle 15 miuten aus
Die logik fuer telegram hast du ja bereits. Jetzt aber eine frage:
-
Mochestest du einfach alle 15 minuten kontrollieren ob die temperatur <18 ist und dan eine meldung geben
-
Auch eine meldung geben wen ausserhalb dieses 15 min intervall die temperatur <18 gefallen ist
Eine bemerkung:
In dem screenshot hast du einen intervall und dan einen trigger verbaut, das wird so nicht gehen. Das script wuerde jetzt nur auf den tigger reagieren der interval macht eigentlich rein garnix.
-
-
Hi Dutch,
danke dir schon mal für den Zeitplan. Direkt verbaut:
Ich möchte gern:
"Mochestest du einfach alle 15 minuten kontrollieren ob die temperatur <18 ist und dan eine meldung geben"
Ich möchte nicht:
alle 15 Minuten wieder eine Warnung erhalten, dass die Temperatur immer noch unter 18 Grad ist. Eine Meldung genügt mir.
Werde wenn du eine Lösung für mich hast dann noch eine Meldung verbauen, dass die Temperatur wieder über 18 Grad ist als Entwarnung sozusagen (bitte nicht die Lösung hierfür verraten. Möchte das selbst erst mal probieren).
VG Thorsten
-
Hi Dutch,
danke dir schon mal für den Zeitplan. Direkt verbaut:
Skript_Temperatur2.png
Ich möchte gern:
"Mochestest du einfach alle 15 minuten kontrollieren ob die temperatur <18 ist und dan eine meldung geben"
Ich möchte nicht:
alle 15 Minuten wieder eine Warnung erhalten, dass die Temperatur immer noch unter 18 Grad ist. Eine Meldung genügt mir. `
Ok verstehe, dan ist der ansatz aber leider doch ein bisschen falsch sorry dafuer :). Auch hsat du gerade wiederum einen trigger in einen trigger verbaut das wird nicht gehen !
Ich empfehle dir:
-
Nur auf temperatur aenderung zu triggern (und halt nu die meldung fal <18) das hast du ja schon
-
damit die meldung nur einmal gegeben wird musst du doch eine object erstellen/mit variable arbeiten sonst weis das script nie ob es bereits eine meldung geschikt hat !
Werde wenn du eine Lösung für mich hast dann noch eine Meldung verbauen, dass die Temperatur wieder über 18 Grad ist als Entwarnung sozusagen (bitte nicht die Lösung hierfür verraten. Möchte das selbst erst mal probieren).
VG Thorsten `
Ich verrate nichst aber gib dir nen hint "sonst falls", hoffe das bringt dich in die richtige richtung
-
-
Hi Dutch,
hab mir deinen Tip direkt einmal angesehen und etwas gefummelt und umgesetzt wie folgt:
1. Frage:
Wird jetzt eine Message an Telegram immer nur einmal dann versendet, wenn Temperatur unter oder Temperatur über 18 Grad?
2. Frage:
Gibt es nicht in Blockly die Mögichkeit, genau dieses mein Blockly alle 15 Minuten mal durchzuspielen und den Trigger zu prüfen? Und in der Zwischenzeit das Script "auszuschalten"? Denke, das wäre auch Ressourcenschonender…
PS: Wenn ich dumme Fragen stelle, sag das oder sag mir, das steht schon hier irgendwo im Forum. Ich hab bei den ersten beiden uchen leider nix gefunden;o)
Danke und Grüße, Thorsten
-
Hi Dutch,
hab mir deinen Tip direkt einmal angesehen und etwas gefummelt und umgesetzt wie folgt: `
sehr gut das mit den triggern hast du jetzt umgesetzt und nicht mehr doppelt und auch das mit dem falls/sonst direkt verstanden :mrgreen: !
1. Frage:
Wird jetzt eine Message an Telegram immer nur einmal dann versendet, wenn Temperatur unter oder Temperatur über 18 Grad? `
Nein, jedesmal wenn der wert de temperatur sich jetzt aendert bekommst du eine nachricht per telegram abhaenging von deiner definition des falls.
Das script ist jetzt zu "dumm" um zu verstehen das es schonmal eine nachricht abgeschikt hat, das koennen wir aber mit einer variable abfangen !
2. Frage:
Gibt es nicht in Blockly die Mögichkeit, genau dieses mein Blockly alle 15 Minuten mal durchzuspielen und den Trigger zu prüfen? Und in der Zwischenzeit das Script "auszuschalten"? Denke, das wäre auch Ressourcenschonender… `
Ehm noe so nicht jetzt mal par basis sachen dazu:
-
du musst dich entscheiden ob du mit einem trigger (reagiert wen was passiert) arbeiten moechtest oder in einem zeit interval (also entweder event driven oder interval)
-
Du kannst natuerlich auch einfach den zeitplan nemen, keinen trigger benutzen (komplett weck lassen) und nur die falls bloecke drin lassen dan laeuft es nur 1 mal pro 15 minuten
Nachteil : nur alle 15 min meldung nicht direkt, das wuerde ich z.b. nicht gerne haben ich will immer info direkt und 15 min sind lange)
-
wen du das script auschalten moechtest mus es ja auch irgendwan wieder eingeschaltet werden und genau das muss mit einenm trigger uberwacht werden
-
mach dir keine sorgen hier um die ressourcen, ein derartiges script mit 2, 3 falls bloecken und ueberwachun eines triggers frisst fast garnichts !
Aber wie gesagt, dein problem is nicht sosehr die 15 min wen ich dich richtige verstehen sind die total egal. Du moechtest naemlich eine meldung wen < 18 und danach erst wieder wen > 18 richtig ?
PS: Wenn ich dumme Fragen stelle, sag das oder sag mir, das steht schon hier irgendwo im Forum. Ich hab bei den ersten beiden uchen leider nix gefunden;o)
Danke und Grüße, Thorsten `
Nope, du suchst… probierst.... fragst wen du festlaeufst und dan sogar mit der bemerkung: gib mir nicht die loesung ich wil selber... Ist doch super so !
-
-
Hi Dutch,
deine Vermutung Aber wie gesagt, dein problem is nicht sosehr die 15 min wen ich dich richtige verstehen sind die total egal. Du moechtest naemlich eine meldung wen < 18 und danach erst wieder wen > 18 richtig ? ist absolut korrekt.
Kannst du mir einen Hinweis geben/einen Link zu einem Beitrag, anhand dessen ich das nun jetzt selbst verstehen und nachbauen kann? Da fehlt mir aktuell ein Ansatz
PS: Super, danke dir. Wollte es nur mal gesagt haben
VG Thorsten
-
:mrgreen: dachte ich mir doch
als ansatzt: der trigger kan so bleiben, also wir lassen es auf pruefe jedesmal wen sich die temperatur aendert.
jet musst du mit variabelen arbeiten, in dem erste block sagst du dan auch die variable auf true und bei dem sonst falls die variable auf falsch.
Jetzt must du noch deine IF erweitern das er sowohl den wert als die variable uerberprueft. Etwas aehnliches haben wir hier oefter gemacht aber die threads stehen noch viel mehr sachen drinne wie timeouts usw und ich moechte dich mit dessen beispielen jetzt nicht unnoetig belasten !.
Schau mal in blockly unter variabelen, setzen/erstellen abfragen usw schaffst du schon
(Es schnell fuer dich nach zu bauen waehre jetzt leichter, mal sehn ob du an dieser info genug hast :).
~Dutch
-
:mrgreen: dachte ich mir doch
als ansatzt: der trigger kan so bleiben, also wir lassen es auf pruefe jedesmal wen sich die temperatur aendert.
jet musst du mit variabelen arbeiten, in dem erste block sagst du dan auch die variable auf true und bei dem sonst falls die variable auf falsch.
Jetzt must du noch deine IF erweitern das er sowohl den wert als die variable uerberprueft. Etwas aehnliches haben wir hier oefter gemacht aber die threads stehen noch viel mehr sachen drinne wie timeouts usw und ich moechte dich mit dessen beispielen jetzt nicht unnoetig belasten !.
Schau mal in blockly unter variabelen, setzen/erstellen abfragen usw schaffst du schon
(Es schnell fuer dich nach zu bauen waehre jetzt leichter, mal sehn ob du an dieser info genug hast :).
~Dutch `
ich glaube so müsste es funktionieren (Math soll nicht das Problem sein, also Logik, aber das muss man erst mal in diese für mich neue Form bringen
Was sagst dazu? :mrgreen: Hab mal versuch die Hinweise zu verstehen und umzusetzen. Sieht für mich logisch aus…
Danke und Grüße, Thorsten
PS: Die Variable - müsste ich die nicht jetzt unter Objekte finden unter dem Javascript-Ordner?? :?: Ist nix...hab das Skript schon neu gestartet und die Objekt-Seite auch.
-
Was sagst dazu? :mrgreen: Hab mal versuch die Hinweise zu verstehen und umzusetzen. Sieht für mich logisch aus… `
richtig so hab ich das gemeint
PS: Die Variable - müsste ich die nicht jetzt unter Objekte finden unter dem Javascript-Ordner?? :?: Ist nix…hab das Skript schon neu gestartet und die Objekt-Seite auch. `
Nein, eine variable so wie du jetzt benutzt gibt es nur im script selber und nicht als object. Man kan mit in scripten/iobroker 2 sachen machen:
-
Man erstellt sich eine variable : nachteil, diese ist nicht ausserhalb des scriptes verfuegbar
-
Man erstellt sich ein object in javascript.0.xxx : vorteil, man kan diese auch in andere scripten benutzen
Dan wir den status jetzt aber nur in diesem script brauchen um zu ueberpruefen ob bereits eine narchricht geschickt wurde ist eine variable ausreichend.
Wen du da spaeter was in VIS visualiesieren moechtest (meldung wurde gesendet z.b.) muessen wir ein object benutzen.
Noch letzter tip, du benutst jetzt 0/1 (ist OK !) kannst aber auch wahr/unwahr nehmen das ist verstaendlicher auch wen man spaeter mal wieder nach dem script schaut.
Aber im grundegenommen sollte es jetzt so gehen wie du wolltest
-
-
Cool
Dann probiere ich die Temperatur morgen Mal auf unter 18 Grad zu bekommen (Lüften) und schreibe hier dann nochmal das Ergebnis - inkl ggf gelöst in der Überschrift
Vielen Dank Dutch
Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk
-
Cool
Dann probiere ich die Temperatur morgen Mal auf unter 18 Grad zu bekommen (Lüften) und schreibe hier dann nochmal das Ergebnis - inkl ggf gelöst in der Überschrift
Vielen Dank Dutch
Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk `
Oder due aenderst mal die temperatur in deinem script von 18 auf 20 oder so
Da kan man auch noch mehr machen, z.b. den wert 18 per vis einstelbar machen fuer deine nachrichten usw aber die basis steht erstmal !
-
Hi Dutch,
hat leider nicht funktioniert. Denke es lag an der Variablen die nicht befüllt war…
habe es jetzt so gemacht, dass ich eine neue Variable angelegt habe wie folgt:
mein Blockly habe ich wie folg angepasst:
führt nun zu folgendem Fehler im Log
Ich denke, das Anlegen von so einer Variablen ist nicht so easy wie ich dachte ^^
-
Unter javascript.0.scriptEnabled sollen keine Objekte angelegt werden.
javascript.0 ist schon richtig danach solltest du dir über eine klare Struktur Gedanken machen, damit das noch übersichtlich bleibt!
Was soll denn diese Variable bewirken?
Edit: Hast du denn bei dem oberen Versuch noch die Abfrage auf "Wert von" Variable geändert? Das hat da noch gefehlt, vielleicht war das der Grund für das Nichtfunktionieren!
Enrico
-
Ach das gibt es doch nicht…hab es jetzt wieder zurück gebaut und die Variable unter javascript wieder gelöscht.
Sieht jetzt wieder wie folgt aus:
Ich kann bei meiner Variablen "KinderzimmerTEMP_var" nicht "Wert vom Objekt ID" benutzen. Ich nutze diese Variable ja nur ausschließlich hier im blockly. Unter Objekte ist die Variable ja nicht zu finden…
PS: Ich glaube ich mache lieber erst morgen weiter ^^
-
Alles richtig soweit, nur bei beiden und-Blöcken muss bei der Variablen noch der Block "Wert von" dazu! In diesen Block kommt dann die Variable!
Es muss dann heißen "Wert von Variable…" ist gleich Wahr/Unwahr!
Enrico
Edit: Hab gerade nochmal probiert, jetzt weiß ich erstmal, was du meinst! :?
-
Vielleicht musst du der Variablen über dem Trigger noch einen Zustand mitgeben, also über dem Trigger "setze Variable auf…", dann bekommt die Variable einen Zustand beim Scriptstart!
Enrico
-
Die Variable ist NULL daher der Fehler, einfach die Variable mit unwahr füllen bei Script start (also außerhalb deines Trigger Block) dann sollte es gut sein
–-----------------------
Send from mobile device
Das schöne ios hat Auto Korrektur zum k****
Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community
-
Die Variable ist NULL daher der Fehler, einfach die Variable mit unwahr füllen bei Script start (also außerhalb deines Trigger Block) dann sollte es gut sein
–-----------------------
Send from mobile device
Das schöne ios hat Auto Korrektur zum k****
Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community `
So, ich habe das Blockly um das Setzen der Variable ergänzt - und Debug-Blöcke versucht einzubauen (bringen keinen Mehrwert so wie ich sie verwende :?: da nirgends mehr steht als vorher. Hab ich vermutlich falsch benutzt).
Wenn ich das Script nun stoppe und neu starte - erhalte ich trotzdem keine Meldung via Telegramm
An Telegramm sollte es nicht liegen - hat ja vorher mal funktioniert. Langsam fange ich an, etwas an mir zu zweifeln. Das sieht doch alles ganz logisch aus?!
Kann ich mit diesen Debug-Blöcken es erreichen, dass ich detailliert mitbekomme, was passiert wenn ich das Skript neu starte?
Temperatur im Kinderzimmer aktuell: 18,8 Grad
Danke euch und Grüße, Thorsten
-
Dein Script wird nur eine Meldung generieren wenn sich die Temperatur ändert nicht bei Script start!
–-----------------------
Send from mobile device
Das schöne ios hat Auto Korrektur zum k****
Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community