Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] javascript Hilfe gesucht - Fehler "State undefined not found"

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] javascript Hilfe gesucht - Fehler "State undefined not found"

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

      Liebe Leute,

      leider hab ich es einfach noch immer nicht kappiert 😉

      Folgender Code ergibt bei mir im Log den Fehler "javascript-0 2016-08-09 20:21:44.173 warn State "undefined" not found"

      //
      // USV-Warnungen via Pushbullet - V 1.0 - 09.08.2016
      //
      
      // Variablen angelgen
      var status_usv_office = "nut.0.ups.status"/*ups.status*/;
      var status_usv_wohn_1 = "nut.1.ups.status"/*ups.status*/;
      var charge_usv_office = "nut.0.battery.charge"/*battery.charge*/;
      var charge_usv_wohn_1 = "nut.1.battery.charge"/*battery.charge*/;
      var r_time_usv_office = "nut.0.battery.runtime"/*battery.runtime*/;
      var r_time_usv_wohn_1 = "nut.1.battery.runtime"/*battery.runtime*/;
      
      // Reaktion auf Statusänderungen
      on ({id: status_usv_office, val: "OB DISCHRG"}), function() {
          var betreff = "Stromausfall!";
          var charge = charge_usv_office;
          var r_time = (r_time_usv_office/60).toFixed(0);
          var location = "Büro";
          send_message(betreff,location,charge,r_time);
      };
      
      // Send Pushbullet Message
      function send_message(subjekt,raum,ladung,restzeit){
          var jetzt = new Date();
              var Stunde = jetzt.getHours();
          var Minute = jetzt.getMinutes();
          if (Minute <= 9) {
              Minute = "0" + Minute;
              }
      
          sendTo("pushbullet",{
              message: "Die USV im " + raum + " ist um " + Stunde + ":" + Minute +" Uhr angesprungen. Die aktuelle Ladung beträgt" + ladung + "% und die Restlaufzeit beträgt " + restzeit + " Minuten.",
              title: subjekt,
              type: "note",
              receiver: "Thomas.Exel@gmail.com"
          })
          }
      
      

      Hat wer eine Idee, warum das so ist?

      Grüße

      Tom

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

        Hallo etv,

        ich habe jetzt nicht den ganzen Code durchgesehen, aber:

        // Variablen angelgen
        var status_usv_office = "nut.0.ups.status"/*ups.status*/; // das ist praktisch nur ein string mit dem inhalt "nut.0.ups.status"
        var status_usv_wohn_1 = "nut.1.ups.status"/*ups.status*/;
        var charge_usv_office = "nut.0.battery.charge"/*battery.charge*/;
        var charge_usv_wohn_1 = "nut.1.battery.charge"/*battery.charge*/;
        var r_time_usv_office = "nut.0.battery.runtime"/*battery.runtime*/;
        var r_time_usv_wohn_1 = "nut.1.battery.runtime"/*battery.runtime*/;
        
        // Reaktion auf Statusänderungen
        on ({id: status_usv_office, val: "OB DISCHRG"}), function() {
            var betreff = "Stromausfall!";
            var charge = getState(charge_usv_office).val; // hier fehlte das getState()
            var r_time = (getState(r_time_usv_office).val/60).toFixed(0); // hier auch
            var location = "Büro";
            send_message(betreff,location,charge,r_time);
        };
        
        

        Es ist hier im Forum weit verbreitet, Variablen, die den String eines Objektes enthalten mit dem Prefix "id" zu benennen. Dadurch hat man mehr Übersicht und weiß schneller, welche Variablen tatsächlich Werte enthalten oder nur den Namen eines Objektes. Letztere müssen dann mit getState("Name des Objektes").val abgefragt werden. Man kann auch den Lastchange oder Timestamp so abfragen getState("Name des Objektes").lc bzw. getState("Name des Objektes").ts

        // NUR ZU VERANSCHAULICHUNG
        var idStatus_usv_wohn_1 = "nut.1.ups.status"/*ups.status*/;
        
        on ({ id: idStatus_usv_wohn_1, // hier dann das id sogar im Code
                val: "OB DISCHRG"
        }), function(dp) {
            var status = getState(idStatus_usv_wohn_1).val;
            // oder hier in dieser Subscription natürlich besser
            var status2 = dp.state.val; // dp für datapoint oder datenpunkt.
        });
        

        Gruß

        Pix

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

          Servus pix,

          danke für die Hilfe - werd' ich am Nachmittag ausbessern!

          Liebe Grüße

          Tom

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

            Liebe Leute,

            sodala - Fehler gefunden - es war eine falsche Klammer beim "on"-Befehl - da war eine zuviel 😉

            hab dann noch die Tipps von pix benutzt und alles ein wenig optimiert (glaub ich zumindest 😄 )

            anbei das Script - ev. eine Idee für Kollegen hier im Forum.

            Schöne Grüße

            Tom

            ! //
            ! // USV-Warnungen via Pushbullet - V 1.1 - 10.08.2016
            ! //
            ! // Variablen angelgen
            ! var id_status_usv_office = "nut.0.ups.status";
            ! var id_status_usv_wohn_1 = "nut.1.ups.status";
            ! var id_charge_usv_office = "nut.0.battery.charge";
            ! var id_charge_usv_wohn_1 = "nut.1.battery.charge";
            ! var id_r_time_usv_office = "nut.0.battery.runtime";
            ! var id_r_time_usv_wohn_1 = "nut.1.battery.runtime";
            ! // Reaktion auf Statusänderungen
            ! // Büro
            ! // Stromausfall
            ! on ({id: id_status_usv_office, val: "OB DISCHRG", oldValNe: "OB DISCHRG"}, function() {
            ! var ladung_s = getState(id_charge_usv_office).val;
            ! var restzeit_s = ((getState(id_r_time_usv_office).val)/60).toFixed(0);
            ! send_message("Stromausfall!","angesprungen.",ladung_s,restzeit_s,"Büro");
            ! });
            ! // tiefer Ladestand
            ! on ({id: id_r_time_usv_office, valLe: 600}, function() {
            ! var ladung_s = getState(id_charge_usv_office).val;
            ! var restzeit_s = ((getState(id_r_time_usv_office).val)/60).toFixed(0);
            ! send_message("Ladung kritisch!","noch immer vom Netz getrennt und hat einen kritischen Ladezustand erreicht.",ladung_s,restzeit_s,"Büro");
            ! });
            ! // Strom wieder retour
            ! on ({id: id_status_usv_office, val: "OL", oldValNe: "OL"}, function() {
            ! var ladung_s = getState(id_charge_usv_office).val;
            ! var restzeit_s = ((getState(id_r_time_usv_office).val)/60).toFixed(0);
            ! send_message("Strom wieder OK!","wieder ans Netz gegangen.",ladung_s,restzeit_s,"Büro");
            ! });
            ! // Wohnzimmer
            ! // Stromausfall
            ! on ({id: id_status_usv_wohn_1, val: "OB DISCHRG", oldValNe: "OB DISCHRG"}, function() {
            ! var ladung_s = getState(id_charge_usv_wohn_1).val;
            ! var restzeit_s = ((getState(id_r_time_usv_wohn_1).val)/60).toFixed(0);
            ! send_message("Stromausfall!","angesprungen.",ladung_s,restzeit_s,"Wohnzimmer");
            ! });
            ! // tiefer Ladestand
            ! on ({id: id_r_time_usv_wohn_1, valLe: 600}, function() {
            ! var ladung_s = getState(id_charge_usv_wohn_1).val;
            ! var restzeit_s = ((getState(id_r_time_usv_wohn_1).val)/60).toFixed(0);
            ! send_message("Ladung kritisch!","noch immer vom Netz getrennt und hat einen kritischen Ladezustand erreicht.",ladung_s,restzeit_s,"Wohnzimmer");
            ! });
            ! // Strom wieder retour
            ! on ({id: id_status_usv_wohn_1, val: "OL", oldValNe: "OL"}, function() {
            ! var ladung_s = getState(id_charge_usv_wohn_1).val;
            ! var restzeit_s = ((getState(id_r_time_usv_wohn_1).val)/60).toFixed(0);
            ! send_message("Strom wieder OK!","wieder ans Netz gegangen.",ladung_s,restzeit_s,"Wohnzimmer");
            ! });
            ! // Send Pushbullet Message
            ! function send_message(betreff_r,text_r,ladung_r,restzeit_r,raum_r){
            ! var jetzt = new Date();
            ! var Stunde = (jetzt.getHours()).toString();
            ! var Minute = (jetzt.getMinutes()).toString();
            ! if (Minute <= 9) {
            ! Minute = "0" + Minute;
            ! }
            ! sendTo("pushbullet",{
            ! message: "Die USV im " + raum_r + " ist kurz vor " + Stunde + ":" + Minute +" Uhr " + text_r + " Die aktuelle Ladunge beträgt " + ladung_r + "% und die Restlaufzeit beträgt " + restzeit_r + " Minuten.",
            ! title: betreff_r,
            ! type: "note",
            ! receiver: "Thomas.Exel@gmail.com"
            ! })
            ! }

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

            Support us

            ioBroker
            Community Adapters
            Donate

            1.1k
            Online

            31.7k
            Users

            79.7k
            Topics

            1.3m
            Posts

            2
            4
            1083
            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