Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Script Überwachung Temperatur und Meldung an Telegram

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Script Überwachung Temperatur und Meldung an Telegram

    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      Kueppert last edited by

      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:

      2700_skript_temperatur.png

      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

      1 Reply Last reply Reply Quote 0
      • Dutchman
        Dutchman Developer Most Active Administrators last edited by

        @Kueppert:

        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 ! 🙂

        @Kueppert:

        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
        979_alle_15_min.jpg

        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.

        1 Reply Last reply Reply Quote 0
        • K
          Kueppert last edited by

          Hi Dutch,

          danke dir schon mal für den Zeitplan. Direkt verbaut:

          2700_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.

          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

          1 Reply Last reply Reply Quote 0
          • Dutchman
            Dutchman Developer Most Active Administrators last edited by

            @Kueppert:

            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 !

            @Kueppert:

            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 🙂

            1 Reply Last reply Reply Quote 0
            • K
              Kueppert last edited by

              Hi Dutch,

              hab mir deinen Tip direkt einmal angesehen und etwas gefummelt und umgesetzt wie folgt:

              2700_2018-01-01_21_50_56-iobroker.admin.png

              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

              1 Reply Last reply Reply Quote 0
              • Dutchman
                Dutchman Developer Most Active Administrators last edited by

                @Kueppert:

                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: !

                @Kueppert:

                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 !

                @Kueppert:

                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 ?

                @Kueppert:

                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 ! 🙂

                1 Reply Last reply Reply Quote 0
                • K
                  Kueppert last edited by

                  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

                  1 Reply Last reply Reply Quote 0
                  • Dutchman
                    Dutchman Developer Most Active Administrators last edited by

                    :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

                    1 Reply Last reply Reply Quote 0
                    • K
                      Kueppert last edited by

                      @Dutchman:

                      :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 🙂 😞

                      2700_iobroker-skript.png

                      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.

                      1 Reply Last reply Reply Quote 0
                      • Dutchman
                        Dutchman Developer Most Active Administrators last edited by

                        @Kueppert:

                        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 🙂

                        @Kueppert:

                        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

                        1 Reply Last reply Reply Quote 0
                        • K
                          Kueppert last edited by

                          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

                          1 Reply Last reply Reply Quote 0
                          • Dutchman
                            Dutchman Developer Most Active Administrators last edited by

                            @Kueppert:

                            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 !

                            1 Reply Last reply Reply Quote 0
                            • K
                              Kueppert last edited by

                              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:

                              2700_iobroker-trigger.png
                              2700_iobroker-trigger2.png

                              mein Blockly habe ich wie folg angepasst:
                              2700_iobroker-blockly.png

                              führt nun zu folgendem Fehler im Log 😞
                              2700_iobroker-fehlerlog.png

                              Ich denke, das Anlegen von so einer Variablen ist nicht so easy wie ich dachte ^^

                              1 Reply Last reply Reply Quote 0
                              • R
                                RappiRN Most Active last edited by

                                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

                                1 Reply Last reply Reply Quote 0
                                • K
                                  Kueppert last edited by

                                  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:

                                  2700_iobroker-blockly.png

                                  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 ^^

                                  1 Reply Last reply Reply Quote 0
                                  • R
                                    RappiRN Most Active last edited by

                                    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! :?

                                    1 Reply Last reply Reply Quote 0
                                    • R
                                      RappiRN Most Active last edited by

                                      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

                                      1 Reply Last reply Reply Quote 0
                                      • Dutchman
                                        Dutchman Developer Most Active Administrators last edited by

                                        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

                                        1 Reply Last reply Reply Quote 0
                                        • K
                                          Kueppert last edited by

                                          @Dutchman:

                                          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 😞

                                          2700_iobroker-blockly.png

                                          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

                                          1 Reply Last reply Reply Quote 0
                                          • Dutchman
                                            Dutchman Developer Most Active Administrators last edited by

                                            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

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            576
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            35
                                            6177
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo