NEWS
[gelöst] javascript Hilfe gesucht - Fehler "State undefined not found"
-
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
-
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
-
Servus pix,
danke für die Hilfe - werd' ich am Nachmittag ausbessern!
Liebe Grüße
Tom
-
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"
! })
! }