Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Variable per Script z. B. mit Cron lässt sich nicht setzen

    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

    Variable per Script z. B. mit Cron lässt sich nicht setzen

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

      Hi,

      ich versuche mittels Skript zu bestimmten Zeiten eine Variable zu setzen

      // Variablen anlegen
      createState("VIS.info1_anzeigen", {name: 'Info1 anzeigen'});
      
      // Info1
      schedule("47 19 * * 1-5", function () {
          setState("VIS.info1_anzeigen", true);
      });
      
      schedule("48 19 * * 1-5", function () {
          setState("VIS.info1_anzeigen", false);
      });
      

      Den Code dazu habe ich mir aus der Doku geholt.

      Um die entsprechende Zeit bekomme ich aber eine Warnung im Log:

      javascript-0 2015-09-10 19:47:00 warn State "VIS.info1_anzeigen" not found

      Was läuft hier falsch? Die Variable wird auch nicht gesetzt - aber sie wird angelegt.

      Danke im Voraus,

      Fitti

      1 Reply Last reply Reply Quote 0
      • Bluefox
        Bluefox last edited by

        Danke für Fehlermeldung. Fixed. :!:

        1 Reply Last reply Reply Quote 0
        • paul53
          paul53 last edited by

          Danke, die Korrektur war auch erforderlich, um im Reiter "Objekte" neu erstellte Datenpunkte sofort nutzen zu können. 😄

          Bisher musste ich den ioBroker-Dienst neu starten.

          1 Reply Last reply Reply Quote 0
          • F
            Fitti last edited by

            Und ich suchte den Fehler bei mir…. :shock:

            Fitti

            1 Reply Last reply Reply Quote 0
            • Bluefox
              Bluefox last edited by

              @Fitti:

              Und ich suchte den Fehler bei mir…. :shock:

              Fitti `
              Geht es?

              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 last edited by

                Sinnvoll wäre es, nach dem Erstellen eines Datenpunktes im Reiter "Objekte" diesen auch zu initialisieren (setState) und zwar mit dem Default-Wert (common.def). Wozu ist dieser sonst gut ?

                Jetzt erscheint der neue Datenpunkt erst im Reiter "Zustände" <u>nachdem</u> per Javascript ein setState() darauf ausgeführt wurde.

                1 Reply Last reply Reply Quote 0
                • Bluefox
                  Bluefox last edited by

                  Nicht immer createState bekommt "def".

                  Ich habe versucht jetzt mit "null" erzeugen.

                  1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 last edited by

                    @Bluefox:

                    Ich habe versucht jetzt mit "null" erzeugen. `
                    Das hat anscheinend nicht funktioniert. Der Zustand erscheint im Reiter "Zustände" erst, nachdem ich setState() auf den Datenpunkt angewendet habe.
                    @Bluefox:

                    Nicht immer createState bekommt "def". `
                    Vorschlag: Wenn "common.def" existiert, dann mit "def" initialisieren, sonst mit "null".

                    1 Reply Last reply Reply Quote 0
                    • Bluefox
                      Bluefox last edited by

                      @paul53:

                      @Bluefox:

                      Ich habe versucht jetzt mit "null" erzeugen. `
                      Das hat anscheinend nicht funktioniert. Der Zustand erscheint im Reiter "Zustände" erst, nachdem ich setState() auf den Datenpunkt angewendet habe.
                      @Bluefox:

                      Nicht immer createState bekommt "def". Vorschlag: Wenn "common.def" existiert, dann mit "def" initialisieren, sonst mit "null".
                      So habe ich doch implementiert:

                      https://github.com/ioBroker/ioBroker.ja … 28cba268eb

                      1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 last edited by

                        @Bluefox:

                        So habe ich doch implementiert: `
                        ioBroker macht es nicht im Reiter "Objekte", wenn ein Objekt neu erstellt wurde, denn es ist in ioBroker.javascript implementiert.

                        1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 last edited by

                          Ab ioBroker Admin 0.5.11 funktioniert es nun super 😄

                          1 Reply Last reply Reply Quote 0
                          • F
                            Fitti last edited by

                            @Bluefox:

                            Geht es? `
                            Ja - bestens. Danke!

                            @paul53:

                            Ab ioBroker Admin 0.5.11 funktioniert es nun super 😄 `
                            Ich warte immer brav, bis die GUI mir "grünes Licht" gibt - sprich, bis ich das Update angeboten bekomme. Zur Zeit ist admin 0.5.9

                            Einige Schreiber hier im Forum haben aber immer wieder höhere Versionsnummern, als bei mir normal vorhanden.

                            Wie kommt ihr eigentlich an die Versionen? Und sollte ich lieber warten, bis die GUI es anbietet oder ist das nur eine normale Anzeige-Verzögerung?

                            @paul53:

                            …und zwar mit dem Default-Wert (common.def). Wozu ist dieser sonst gut ? `
                            Als normaler Anwender muss ich mir hier nicht drum kümmern, oder?

                            <size size="85">Hätte jetzt keine Ahnung, wie ich wo und wozu die common.def benützen sollte.</size>

                            Fitti

                            1 Reply Last reply Reply Quote 0
                            • P
                              pix last edited by

                              @Fitti:

                              Ich warte immer brav, bis die GUI mir "grünes Licht" gibt - sprich, bis ich das Update angeboten bekomme. `
                              ich warte eigentlich auch immer, aber oft werden mir die Updates nicht angeboten. Daher schau ich gelegentlich mit

                              ./iobroker update
                              ````welche Adapter nicht mehr auf dem neuesten Stand sind.
                              
                              Wenn wichtige dabei sind, stoppe ich iobroker und lasse im Terminal ein Upgrade laufen
                              

                              ./iobroker stop
                              ./iobroker upgrade
                              ./iobroker start

                              Nicht so gedacht, aber geht.
                              
                              Gruß
                              
                              Pix
                              1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators last edited by

                                Hallo fitti,
                                @Fitti:

                                Ich warte immer brav, bis die GUI mir "grünes Licht" gibt - sprich, bis ich das Update angeboten bekomme. `
                                Ich habe mich letztens auch darüber gewundert, dass die GUI mir eigenständig eine neue Version anbietet, aber Standard ist, dass du selber so etwas anstoßen musst.

                                Dazu musst du im Reiter Adapter auf das icon "update adapter information" (erstes Icon im zweiten Block) oben links klicken.

                                Finde auf die Schnelle keinen passenden Screenshot EDIT: Da isser!
                                144_adapter_updaten.jpg

                                Dann bekommst du auch die 0.5.11 angeboten und wahrscheinlich viele andere mehr.

                                Auch ein neuer js-controller im Reiter "Hosts"

                                Diesen zuerst updaten, danach Reboot des rasPi.

                                Gruß

                                Rainer

                                1 Reply Last reply Reply Quote 0
                                • F
                                  Fitti last edited by

                                  Hi Rainer,

                                  das mache ich immer so im wöchentlichen Turnus, dass ich oben links den Update abrufe. Aber da ist mir aufgefallen, dass der eine oder andere Eintrag hier bei irgendeinem Adapter manchmal eine höhere Version hat.

                                  Ich bin nun kein Update-Junkie. Doch der eine oder andere Fehler ist ja noch da und dann schaue ich immer, ob dieser bereits gelöst wurde.

                                  Aber die 0.5.11 wird mir jetzt angeboten. Danke!

                                  1 Reply Last reply Reply Quote 0
                                  • Homoran
                                    Homoran Global Moderator Administrators last edited by

                                    Vielleicht hat ja bei dir der böse Browser Cache zugeschlagen und dir bis heute die Versionen bis 0.5.11 verheimlicht :mrgreen:

                                    Gruß

                                    Rainer

                                    1 Reply Last reply Reply Quote 0
                                    • F
                                      Fitti last edited by

                                      <color color="#888">Ich packe es mal hier rein, da es sich um Variablen setzen handelt.

                                      Nach einem ioBroker-Neustart mittels setState in einem Skript wird die variable nicht gesetzt. Beim zweiten Durchlauf dann ja.

                                      createState("VIS.InternAlarmZustandsanzeige", {name: 'VIS Interner Alarm Zustandsanzeige'}); // INTERNER ALARM:=> 0=Alarm deaktiviert; 1=in Arbeit 2=scharf
                                      createState("VIS.ExternAlarmZustandsanzeige", {name: 'VIS Externer Alarm Zustandsanzeige'}); // EXTERNER ALARM:=> 0=Alarm deaktiviert; 1=in Arbeit 2=scharf
                                      
                                      // Setzen der Ausgangslage beim Starten des Skriptes:
                                      var status_intern = getState("hm-rega.0.14247").val;  /*interner_alarm_an*/
                                      var status_extern = getState("hm-rega.0.11162").val;  /*externer_alarm_an*/
                                      
                                      log ("Status Interner Alarm: "+ status_intern, 'info');
                                      log ("Status Externer Alarm: "+ status_extern, 'info');
                                      
                                      if (status_intern === true) {
                                          setState("VIS.InternAlarmZustandsanzeige", 2);
                                          log ("Setze interner Alarm auf true", 'info');
                                      } else {
                                          setState("VIS.InternAlarmZustandsanzeige", 0);
                                          log ("Setze interner Alarm auf false", 'info');
                                      }
                                      
                                      if (status_extern === true) {
                                          setState("VIS.ExternAlarmZustandsanzeige", 2);
                                          log ("Setze externer Alarm auf true", 'info');
                                      } else {
                                          setState("VIS.ExternAlarmZustandsanzeige", 0);
                                          log ("Setze externer Alarm auf false", 'info');
                                      }
                                      

                                      Nach dem ioBroker Neustart ist seltsamerweise der Zustand bei Beiden Variablen "1". Das Skript lief aber durch.

                                      Ich hatte es auch schon, dass eine Var 0 und die andere 1 war. Liegt hier noch irgendein Timingfehler vor?

                                      Durch die if-Abfrage müsste er ja bei unbestimmten Zustand mindestens auf 0 setzen, oder?

                                      Viele Grüße,

                                      Fitti

                                      1 Reply Last reply Reply Quote 0
                                      • Bluefox
                                        Bluefox last edited by

                                        @Fitti:

                                        <color color="#888">Ich packe es mal hier rein, da es sich um Variablen setzen handelt.

                                        Nach einem ioBroker-Neustart mittels setState in einem Skript wird die variable nicht gesetzt. Beim zweiten Durchlauf dann ja.

                                        createState("VIS.InternAlarmZustandsanzeige", {name: 'VIS Interner Alarm Zustandsanzeige'}); // INTERNER ALARM:=> 0=Alarm deaktiviert; 1=in Arbeit 2=scharf
                                        createState("VIS.ExternAlarmZustandsanzeige", {name: 'VIS Externer Alarm Zustandsanzeige'}); // EXTERNER ALARM:=> 0=Alarm deaktiviert; 1=in Arbeit 2=scharf
                                        
                                        // Setzen der Ausgangslage beim Starten des Skriptes:
                                        var status_intern = getState("hm-rega.0.14247").val;  /*interner_alarm_an*/
                                        var status_extern = getState("hm-rega.0.11162").val;  /*externer_alarm_an*/
                                        
                                        log ("Status Interner Alarm: "+ status_intern, 'info');
                                        log ("Status Externer Alarm: "+ status_extern, 'info');
                                        
                                        if (status_intern === true) {
                                            setState("VIS.InternAlarmZustandsanzeige", 2);
                                            log ("Setze interner Alarm auf true", 'info');
                                        } else {
                                            setState("VIS.InternAlarmZustandsanzeige", 0);
                                            log ("Setze interner Alarm auf false", 'info');
                                        }
                                        
                                        if (status_extern === true) {
                                            setState("VIS.ExternAlarmZustandsanzeige", 2);
                                            log ("Setze externer Alarm auf true", 'info');
                                        } else {
                                            setState("VIS.ExternAlarmZustandsanzeige", 0);
                                            log ("Setze externer Alarm auf false", 'info');
                                        }
                                        

                                        Nach dem ioBroker Neustart ist seltsamerweise der Zustand bei Beiden Variablen "1". Das Skript lief aber durch.

                                        Ich hatte es auch schon, dass eine Var 0 und die andere 1 war. Liegt hier noch irgendein Timingfehler vor?

                                        Durch die if-Abfrage müsste er ja bei unbestimmten Zustand mindestens auf 0 setzen, oder?

                                        Viele Grüße,

                                        Fitti `

                                        Es muss so aussehen:

                                        // Call ready after the variables created.
                                        function ready() {
                                          // Setzen der Ausgangslage beim Starten des Skriptes:
                                          var status_intern = getState("hm-rega.0.14247").val;  /*interner_alarm_an*/
                                          var status_extern = getState("hm-rega.0.11162").val;  /*externer_alarm_an*/
                                        
                                          log ("Status Interner Alarm: "+ status_intern, 'info');
                                          log ("Status Externer Alarm: "+ status_extern, 'info');
                                        
                                          if (status_intern === true) {
                                              setState("VIS.InternAlarmZustandsanzeige", 2);
                                              log ("Setze interner Alarm auf true", 'info');
                                          } else {
                                              setState("VIS.InternAlarmZustandsanzeige", 0);
                                              log ("Setze interner Alarm auf false", 'info');
                                          }
                                        
                                          if (status_extern === true) {
                                              setState("VIS.ExternAlarmZustandsanzeige", 2);
                                              log ("Setze externer Alarm auf true", 'info');
                                          } else {
                                              setState("VIS.ExternAlarmZustandsanzeige", 0);
                                              log ("Setze externer Alarm auf false", 'info');
                                          }
                                        });
                                        
                                        createState("VIS.InternAlarmZustandsanzeige", {name: 'VIS Interner Alarm Zustandsanzeige'}); // INTERNER ALARM:=> 0=Alarm deaktiviert; 1=in Arbeit 2=scharf
                                        createState("VIS.ExternAlarmZustandsanzeige", {name: 'VIS Externer Alarm Zustandsanzeige'}, ready); // EXTERNER ALARM:=> 0=Alarm deaktiviert; 1=in Arbeit 2=scharf
                                        
                                        
                                        1 Reply Last reply Reply Quote 0
                                        • F
                                          Fitti last edited by

                                          Danke. Alles klar jetzt.

                                          Fitti

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

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          534
                                          Online

                                          31.9k
                                          Users

                                          80.2k
                                          Topics

                                          1.3m
                                          Posts

                                          5
                                          19
                                          2319
                                          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