NEWS
[Vorlage] Generische Batteriestandsüberwachung + Vis-ausgabe
-
@papaechokilo @Dominik-F Der DeadCheck is da nonsens wie Dominik schon sagte, sollte aber nicht zum Fehler führen. Der Fehler wird bei der Ausgabe der Spannung erzeugt und deutet drauf hin, dass iwo ein Datenpunkt keinen Wert hat, also leer ist. Bitte das mal überprüfen.
-
-
@papaechokilo Ok, das nehm ich dann mit auf, auf "Ok" reagiert das Skript schon, normal is neu. Klick bei dem Datenpunkt bitte mal rechts auf den Bleistift, wähl dann das Register RAW und mach mir nen Screenshot davon.
-
-
@papaechokilo Danke, ist ab sofort in der 1.7.4 integriert.
-
@pittini Leider kommen wieder diese Fehlermeldungen.
-
@papaechokilo Seltsam. Kannste bitte mal im Skript logging aktivieren und mir nen komplettes startlog posten?
-
Ich denke die Zeile vor der Fehlermeldung, das es nicht existiert ist der Grund für die Fenlermeldung.
2021-06-13 11:17:15.680 - [32minfo[39m: javascript.0 (6146) Stop script script.js.common.System.Batteriestatus 2021-06-13 11:17:15.691 - [32minfo[39m: javascript.0 (6146) Start javascript script.js.common.System.Batteriestatus 2021-06-13 11:17:15.722 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: starting Batterieüberwachung V.1.7.4 2021-06-13 11:17:15.723 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Reaching FillWelcheFunktionVerwenden 2021-06-13 11:17:15.723 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Found Function BatterieSpannung_15 2021-06-13 11:17:15.724 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Found Function BatterieSpannung_30 2021-06-13 11:17:15.724 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: InitialSpannung 0 gesetzt auf 80%= 1.2 2021-06-13 11:17:15.724 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: InitialSpannung 1 gesetzt auf 80%= 2.4 2021-06-13 11:17:15.725 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: registered 0 subscriptions and 0 schedules 2021-06-13 11:17:15.740 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: CreateStates fertig! 2021-06-13 11:17:15.740 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Reaching main() 2021-06-13 11:17:15.740 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Reaching init() 2021-06-13 11:17:15.741 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: BattMinLimit Value conversion - success 2021-06-13 11:17:15.741 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=boolean getState(Sensor[counter]).val=false 2021-06-13 11:17:15.742 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=false TempUnit=undefined TypeOf=boolean 2021-06-13 11:17:15.742 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 0 BatterieSpannung_15 found at hmip.0.devices.3014F711A00000DBE99AD2C3.channels.0.lowBat Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.742 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=boolean getState(Sensor[counter]).val=false 2021-06-13 11:17:15.743 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=false TempUnit=undefined TypeOf=boolean 2021-06-13 11:17:15.743 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 1 BatterieSpannung_15 found at hmip.0.devices.3014F711A00000DBE99AD8D7.channels.0.lowBat Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.743 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=boolean getState(Sensor[counter]).val=false 2021-06-13 11:17:15.744 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=false TempUnit=undefined TypeOf=boolean 2021-06-13 11:17:15.744 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 2 BatterieSpannung_15 found at hmip.0.devices.3014F711A00000DBE99AD8DF.channels.0.lowBat Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.745 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=boolean getState(Sensor[counter]).val=false 2021-06-13 11:17:15.745 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=false TempUnit=undefined TypeOf=boolean 2021-06-13 11:17:15.745 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 3 BatterieSpannung_15 found at hmip.0.devices.3014F711A00000DBE9A085C5.channels.0.lowBat Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.745 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=boolean getState(Sensor[counter]).val=false 2021-06-13 11:17:15.746 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=false TempUnit=undefined TypeOf=boolean 2021-06-13 11:17:15.746 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 4 BatterieSpannung_15 found at hmip.0.devices.3014F711A00000DBE9A0966C.channels.0.lowBat Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.746 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=boolean getState(Sensor[counter]).val=false 2021-06-13 11:17:15.747 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=false TempUnit=undefined TypeOf=boolean 2021-06-13 11:17:15.747 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 5 BatterieSpannung_15 found at hmip.0.devices.3014F711A00000DBE9A0967C.channels.0.lowBat Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.747 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=boolean getState(Sensor[counter]).val=false 2021-06-13 11:17:15.747 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=false TempUnit=undefined TypeOf=boolean 2021-06-13 11:17:15.748 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 6 BatterieSpannung_15 found at hmip.0.devices.3014F711A00000DBE9A096D3.channels.0.lowBat Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.748 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=boolean getState(Sensor[counter]).val=false 2021-06-13 11:17:15.748 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=false TempUnit=undefined TypeOf=boolean 2021-06-13 11:17:15.748 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 7 BatterieSpannung_15 found at hmip.0.devices.3014F711A00000DBE9A096D6.channels.0.lowBat Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.749 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=boolean getState(Sensor[counter]).val=false 2021-06-13 11:17:15.749 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=false TempUnit=undefined TypeOf=boolean 2021-06-13 11:17:15.750 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 8 BatterieSpannung_15 found at hmip.0.devices.3014F711A000091A499214EF.channels.0.lowBat Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.750 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=boolean getState(Sensor[counter]).val=false 2021-06-13 11:17:15.751 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=false TempUnit=undefined TypeOf=boolean 2021-06-13 11:17:15.751 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 9 BatterieSpannung_15 found at hmip.0.devices.3014F711A0000A9709904FDE.channels.0.lowBat Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.751 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=boolean getState(Sensor[counter]).val=false 2021-06-13 11:17:15.751 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=false TempUnit=undefined TypeOf=boolean 2021-06-13 11:17:15.752 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 10 BatterieSpannung_15 found at hmip.0.devices.3014F711A0000ADA49920925.channels.0.lowBat Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.752 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=boolean getState(Sensor[counter]).val=false 2021-06-13 11:17:15.752 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=false TempUnit=undefined TypeOf=boolean 2021-06-13 11:17:15.752 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 11 BatterieSpannung_15 found at hmip.0.devices.3014F711A0000E9BE998C39B.channels.0.lowBat Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.753 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=boolean getState(Sensor[counter]).val=false 2021-06-13 11:17:15.753 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=false TempUnit=undefined TypeOf=boolean 2021-06-13 11:17:15.753 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 12 BatterieSpannung_15 found at hmip.0.devices.3014F711A0000E9BE998C56B.channels.0.lowBat Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.753 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=boolean getState(Sensor[counter]).val=false 2021-06-13 11:17:15.754 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=false TempUnit=undefined TypeOf=boolean 2021-06-13 11:17:15.754 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 13 BatterieSpannung_15 found at hmip.0.devices.3014F711A0000E9BE998C6F1.channels.0.lowBat Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.754 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=boolean getState(Sensor[counter]).val=false 2021-06-13 11:17:15.754 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=false TempUnit=undefined TypeOf=boolean 2021-06-13 11:17:15.755 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 14 BatterieSpannung_15 found at hmip.0.devices.3014F711A0000EDBE98B96D5.channels.0.lowBat Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.755 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=boolean getState(Sensor[counter]).val=false 2021-06-13 11:17:15.755 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=false TempUnit=undefined TypeOf=boolean 2021-06-13 11:17:15.755 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 15 BatterieSpannung_15 found at hmip.0.devices.3014F711A0001898A993D7D5.channels.0.lowBat Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.755 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=boolean getState(Sensor[counter]).val=false 2021-06-13 11:17:15.756 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=false TempUnit=undefined TypeOf=boolean 2021-06-13 11:17:15.756 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 16 BatterieSpannung_15 found at hmip.0.devices.3014F711A000189BE98FF201.channels.0.lowBat Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.756 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=boolean getState(Sensor[counter]).val=false 2021-06-13 11:17:15.757 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=false TempUnit=undefined TypeOf=boolean 2021-06-13 11:17:15.757 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 17 BatterieSpannung_15 found at hmip.0.devices.3014F711A000189BE98FF2A1.channels.0.lowBat Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.757 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=number getState(Sensor[counter]).val=100 2021-06-13 11:17:15.757 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=100 TempUnit=% TypeOf=number 2021-06-13 11:17:15.758 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 18 BatterieSpannung_15 found at hue.0.Hue_motion_Vorzimmer.battery Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.758 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=number getState(Sensor[counter]).val=100 2021-06-13 11:17:15.758 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=100 TempUnit=% TypeOf=number 2021-06-13 11:17:15.759 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 19 BatterieSpannung_15 found at hue.0.Hue_motion_Vorzimmer_Bild.battery Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.759 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=number getState(Sensor[counter]).val=100 2021-06-13 11:17:15.759 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=100 TempUnit=% TypeOf=number 2021-06-13 11:17:15.759 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 20 BatterieSpannung_15 found at hue.0.Hue_temperature_sensor_1.battery Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.760 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=number getState(Sensor[counter]).val=100 2021-06-13 11:17:15.760 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=100 TempUnit=% TypeOf=number 2021-06-13 11:17:15.760 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 21 BatterieSpannung_15 found at hue.0.Hue_temperature_sensor_2.battery Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.760 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=number getState(Sensor[counter]).val=100 2021-06-13 11:17:15.761 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=100 TempUnit=% TypeOf=number 2021-06-13 11:17:15.761 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 22 BatterieSpannung_15 found at hue.0.Hue_dimmer_Iris_Peter_zzzz.battery Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.761 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=number getState(Sensor[counter]).val=100 2021-06-13 11:17:15.761 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=100 TempUnit=% TypeOf=number 2021-06-13 11:17:15.761 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 23 BatterieSpannung_15 found at hue.0.Hue_ambient_light_sensor_2.battery Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.762 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=number getState(Sensor[counter]).val=100 2021-06-13 11:17:15.762 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=100 TempUnit=% TypeOf=number 2021-06-13 11:17:15.762 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 24 BatterieSpannung_15 found at hue.0.Hue_ambient_light_sensor_1.battery Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.762 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=number getState(Sensor[counter]).val=100 2021-06-13 11:17:15.763 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=100 TempUnit=% TypeOf=number 2021-06-13 11:17:15.763 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 25 BatterieSpannung_15 found at hue.0.Hue_Dimmer_Wohnzimmer.battery Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.763 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=number getState(Sensor[counter]).val=100 2021-06-13 11:17:15.763 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=100 TempUnit=% TypeOf=number 2021-06-13 11:17:15.764 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 26 BatterieSpannung_15 found at hue.0.Hue_Dimmer_Vorzimmer_2.battery Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.764 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=number getState(Sensor[counter]).val=100 2021-06-13 11:17:15.764 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=100 TempUnit=% TypeOf=number 2021-06-13 11:17:15.764 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 27 BatterieSpannung_15 found at hue.0.Hue_Dimmer_Vorzimmer.battery Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.764 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=number getState(Sensor[counter]).val=98 2021-06-13 11:17:15.765 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=98 TempUnit=% TypeOf=number 2021-06-13 11:17:15.765 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 28 BatterieSpannung_15 found at hue.0.Hue_Dimmer_Iris_Peter.battery Umax= 1.5 BattMinLimit=1.2 Val= 1.47 SensorProzent= 98 2021-06-13 11:17:15.765 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=number getState(Sensor[counter]).val=78 2021-06-13 11:17:15.765 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=78 TempUnit=% TypeOf=number 2021-06-13 11:17:15.766 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 29 BatterieSpannung_15 found at hue.0.Hue_Dimmer_Iris_Krisztina.battery Umax= 1.5 BattMinLimit=1.2 Val= 1.17 SensorProzent= 78 2021-06-13 11:17:15.766 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=number getState(Sensor[counter]).val=33 2021-06-13 11:17:15.766 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=33 TempUnit=% TypeOf=number 2021-06-13 11:17:15.767 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 30 BatterieSpannung_15 found at netatmo.0.VIE-(VIE-WZ).VIE-BZ.BatteryStatus Umax= 1.5 BattMinLimit=1.2 Val= 0.495 SensorProzent= 33 2021-06-13 11:17:15.767 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=number getState(Sensor[counter]).val=58 2021-06-13 11:17:15.768 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=58 TempUnit=% TypeOf=number 2021-06-13 11:17:15.768 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 31 BatterieSpannung_15 found at netatmo.0.VIE-(VIE-WZ).VIE-KÜCHE.BatteryStatus Umax= 1.5 BattMinLimit=1.2 Val= 0.87 SensorProzent= 58 2021-06-13 11:17:15.769 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=number getState(Sensor[counter]).val=83 2021-06-13 11:17:15.769 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=83 TempUnit=% TypeOf=number 2021-06-13 11:17:15.769 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 32 BatterieSpannung_15 found at netatmo.0.VIE-(VIE-WZ).VIE-OUTDOOR.BatteryStatus Umax= 1.5 BattMinLimit=1.2 Val= 1.2449999999999999 SensorProzent= 83 2021-06-13 11:17:15.769 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=number getState(Sensor[counter]).val=63 2021-06-13 11:17:15.770 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=63 TempUnit=% TypeOf=number 2021-06-13 11:17:15.770 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 33 BatterieSpannung_15 found at netatmo.0.VIE-(VIE-WZ).VIE-SZ.BatteryStatus Umax= 1.5 BattMinLimit=1.2 Val= 0.945 SensorProzent= 63 2021-06-13 11:17:15.770 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=boolean getState(Sensor[counter]).val=false 2021-06-13 11:17:15.771 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=false TempUnit=undefined TypeOf=boolean 2021-06-13 11:17:15.771 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 34 BatterieSpannung_15 found at hmip.0.devices.3014F711A00000DBE99AD20D.channels.0.lowBat Umax= 1.5 BattMinLimit=1.2 Val= 1.5 SensorProzent= 100 2021-06-13 11:17:15.771 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=string getState(Sensor[counter]).val=NORMAL 2021-06-13 11:17:15.771 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=NaN TempUnit= TypeOf=number 2021-06-13 11:17:15.771 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 35 BatterieSpannung_15 found at tado.0.650776.Rooms.12.devices.VA1891567616.info.batteryState Umax= 1.5 BattMinLimit=1.2 Val= NaN SensorProzent= NaN 2021-06-13 11:17:15.772 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: BattMinLimit Value conversion - success 2021-06-13 11:17:15.772 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: existsState(Sensor[counter])=true typeof (getState(Sensor[counter]).val)=boolean getState(Sensor[counter]).val=false 2021-06-13 11:17:15.772 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Tempval=false TempUnit=undefined TypeOf=boolean 2021-06-13 11:17:15.772 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: 36 BatterieSpannung_30 found at hmip.0.devices.3014F711A00000DBE9A0966C.channels.0.unreach Umax= 3 BattMinLimit=2.4 Val= 3 SensorProzent= 100 2021-06-13 11:17:15.774 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Reaching CheckDeadBatt() 2021-06-13 11:17:15.775 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_motion_Vorzimmer is possibly dead, searching for second check 2021-06-13 11:17:15.775 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_motion_Vorzimmer has second check, now checking 2021-06-13 11:17:15.775 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: z=28 Device hue.0.Hue_motion_Vorzimmer second check at hue.0.Hue_motion_Vorzimmer.reachable 2021-06-13 11:17:15.775 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Second check failed, hue.0.Hue_motion_Vorzimmer seems to be really dead 2021-06-13 11:17:15.775 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Peter...he's dead 2021-06-13 11:17:15.776 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Reaching Meldung() 2021-06-13 11:17:15.776 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Ausfall oder disconnect im Vorzimmer bei Gerät Hue motion Vorzimmer 2021-06-13 11:17:15.776 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_motion_Vorzimmer_Bild is possibly dead, searching for second check 2021-06-13 11:17:15.777 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_motion_Vorzimmer_Bild has second check, now checking 2021-06-13 11:17:15.777 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: z=29 Device hue.0.Hue_motion_Vorzimmer_Bild second check at hue.0.Hue_motion_Vorzimmer_Bild.reachable 2021-06-13 11:17:15.777 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Second check failed, hue.0.Hue_motion_Vorzimmer_Bild seems to be really dead 2021-06-13 11:17:15.777 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Peter...he's dead 2021-06-13 11:17:15.777 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Reaching Meldung() 2021-06-13 11:17:15.778 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Ausfall oder disconnect im Vorzimmer bei Gerät Hue motion Vorzimmer Bild 2021-06-13 11:17:15.778 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_temperature_sensor_1 is possibly dead, searching for second check 2021-06-13 11:17:15.778 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_temperature_sensor_1 has second check, now checking 2021-06-13 11:17:15.778 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: z=30 Device hue.0.Hue_temperature_sensor_1 second check at hue.0.Hue_temperature_sensor_1.reachable 2021-06-13 11:17:15.778 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Second check failed, hue.0.Hue_temperature_sensor_1 seems to be really dead 2021-06-13 11:17:15.778 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Peter...he's dead 2021-06-13 11:17:15.779 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Reaching Meldung() 2021-06-13 11:17:15.779 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Ausfall oder disconnect im Vorzimmer bei Gerät Hue temperature sensor 1 2021-06-13 11:17:15.779 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_temperature_sensor_2 is possibly dead, searching for second check 2021-06-13 11:17:15.779 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_temperature_sensor_2 has second check, now checking 2021-06-13 11:17:15.780 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: z=31 Device hue.0.Hue_temperature_sensor_2 second check at hue.0.Hue_temperature_sensor_2.reachable 2021-06-13 11:17:15.780 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Second check failed, hue.0.Hue_temperature_sensor_2 seems to be really dead 2021-06-13 11:17:15.780 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Peter...he's dead 2021-06-13 11:17:15.780 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Reaching Meldung() 2021-06-13 11:17:15.780 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Ausfall oder disconnect im Vorzimmer bei Gerät Hue temperature sensor 2 2021-06-13 11:17:15.780 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_dimmer_Iris_Peter_zzzz is possibly dead, searching for second check 2021-06-13 11:17:15.781 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_dimmer_Iris_Peter_zzzz has second check, now checking 2021-06-13 11:17:15.781 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: z=27 Device hue.0.Hue_dimmer_Iris_Peter_zzzz second check at hue.0.Hue_dimmer_Iris_Peter_zzzz.reachable 2021-06-13 11:17:15.781 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Second check failed, hue.0.Hue_dimmer_Iris_Peter_zzzz seems to be really dead 2021-06-13 11:17:15.781 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Peter...he's dead 2021-06-13 11:17:15.781 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Reaching Meldung() 2021-06-13 11:17:15.782 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Ausfall oder disconnect im Schlafzimmer bei Gerät Hue dimmer Iris Peter zzzz 2021-06-13 11:17:15.782 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_ambient_light_sensor_2 is possibly dead, searching for second check 2021-06-13 11:17:15.782 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_ambient_light_sensor_2 has second check, now checking 2021-06-13 11:17:15.782 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: z=26 Device hue.0.Hue_ambient_light_sensor_2 second check at hue.0.Hue_ambient_light_sensor_2.reachable 2021-06-13 11:17:15.782 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Second check failed, hue.0.Hue_ambient_light_sensor_2 seems to be really dead 2021-06-13 11:17:15.782 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Peter...he's dead 2021-06-13 11:17:15.783 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Reaching Meldung() 2021-06-13 11:17:15.783 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Ausfall oder disconnect im Vorzimmer bei Gerät Hue ambient light sensor 2 2021-06-13 11:17:15.783 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_ambient_light_sensor_1 is possibly dead, searching for second check 2021-06-13 11:17:15.783 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_ambient_light_sensor_1 has second check, now checking 2021-06-13 11:17:15.783 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: z=25 Device hue.0.Hue_ambient_light_sensor_1 second check at hue.0.Hue_ambient_light_sensor_1.reachable 2021-06-13 11:17:15.783 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Second check failed, hue.0.Hue_ambient_light_sensor_1 seems to be really dead 2021-06-13 11:17:15.784 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Peter...he's dead 2021-06-13 11:17:15.784 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Reaching Meldung() 2021-06-13 11:17:15.784 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Ausfall oder disconnect im Vorzimmer bei Gerät Hue ambient light sensor 1 2021-06-13 11:17:15.784 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_Dimmer_Wohnzimmer is possibly dead, searching for second check 2021-06-13 11:17:15.784 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_Dimmer_Wohnzimmer has second check, now checking 2021-06-13 11:17:15.785 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: z=24 Device hue.0.Hue_Dimmer_Wohnzimmer second check at hue.0.Hue_Dimmer_Wohnzimmer.reachable 2021-06-13 11:17:15.785 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Second check failed, hue.0.Hue_Dimmer_Wohnzimmer seems to be really dead 2021-06-13 11:17:15.785 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Peter...he's dead 2021-06-13 11:17:15.785 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Reaching Meldung() 2021-06-13 11:17:15.785 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Ausfall oder disconnect im Wohnzimmer bei Gerät Hue Dimmer Wohnzimmer 2021-06-13 11:17:15.786 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_Dimmer_Vorzimmer_2 is possibly dead, searching for second check 2021-06-13 11:17:15.786 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_Dimmer_Vorzimmer_2 has second check, now checking 2021-06-13 11:17:15.786 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: z=23 Device hue.0.Hue_Dimmer_Vorzimmer_2 second check at hue.0.Hue_Dimmer_Vorzimmer_2.reachable 2021-06-13 11:17:15.786 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Second check failed, hue.0.Hue_Dimmer_Vorzimmer_2 seems to be really dead 2021-06-13 11:17:15.786 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Peter...he's dead 2021-06-13 11:17:15.786 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Reaching Meldung() 2021-06-13 11:17:15.787 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Ausfall oder disconnect im Vorzimmer bei Gerät Hue Dimmer Vorzimmer 2 2021-06-13 11:17:15.787 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_Dimmer_Vorzimmer is possibly dead, searching for second check 2021-06-13 11:17:15.787 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_Dimmer_Vorzimmer has second check, now checking 2021-06-13 11:17:15.787 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: z=22 Device hue.0.Hue_Dimmer_Vorzimmer second check at hue.0.Hue_Dimmer_Vorzimmer.reachable 2021-06-13 11:17:15.787 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Second check failed, hue.0.Hue_Dimmer_Vorzimmer seems to be really dead 2021-06-13 11:17:15.787 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Peter...he's dead 2021-06-13 11:17:15.788 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Reaching Meldung() 2021-06-13 11:17:15.788 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Ausfall oder disconnect im Vorzimmer bei Gerät Hue Dimmer Vorzimmer 2021-06-13 11:17:15.788 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_Dimmer_Iris_Peter is possibly dead, searching for second check 2021-06-13 11:17:15.788 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Device hue.0.Hue_Dimmer_Iris_Peter has second check, now checking 2021-06-13 11:17:15.789 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: z=21 Device hue.0.Hue_Dimmer_Iris_Peter second check at hue.0.Hue_Dimmer_Iris_Peter.reachable 2021-06-13 11:17:15.789 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Second check failed, hue.0.Hue_Dimmer_Iris_Peter seems to be really dead 2021-06-13 11:17:15.789 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Peter...he's dead 2021-06-13 11:17:15.789 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Reaching Meldung() 2021-06-13 11:17:15.789 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Ausfall oder disconnect im Schlafzimmer bei Gerät Hue Dimmer Iris Peter 2021-06-13 11:17:15.790 - [32minfo[39m: javascript.0 (6146) script.js.common.System.Batteriestatus: Reaching MakeTable 2021-06-13 11:17:15.813 - [33mwarn[39m: javascript.0 (6146) Object "tado.0.650776.Rooms.12.devices.VA1891567616.info" does not exist 2021-06-13 11:17:15.816 - [31merror[39m: javascript.0 (6146) Error in callback: TypeError: Cannot read property 'common' of null 2021-06-13 11:17:15.817 - [31merror[39m: javascript.0 (6146) at MakeTable (script.js.common.System.Batteriestatus:548:111) 2021-06-13 11:17:15.817 - [31merror[39m: javascript.0 (6146) at CheckDeadBatt (script.js.common.System.Batteriestatus:351:13) 2021-06-13 11:17:15.817 - [31merror[39m: javascript.0 (6146) at main (script.js.common.System.Batteriestatus:235:5) 2021-06-13 11:17:15.817 - [31merror[39m: javascript.0 (6146) at Object.<anonymous> (script.js.common.System.Batteriestatus:106:13) 2021-06-13 11:17:15.817 - [31merror[39m: javascript.0 (6146) at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1976:38) 2021-06-13 11:17:15.818 - [31merror[39m: javascript.0 (6146) at processImmediate (internal/timers.js:463:21) 2021-06-13 11:17:16.508 - [32minfo[39m: weatherunderground.0 (12922) Terminated (NO_ERROR): Without reason
Mod-Edit: Code in </> Code-Tag gepackt!
-
@pittini ich kann TADO auch aus dem Skript herausnehmen. Ist kein Problem, da ich die TADO Werte einzeln separat in der VIS anzeige.
-
Doppel Beitrag - Inhalt von mir entfernt!
-
@papaechokilo sagte in [Vorlage] Generische Batteriestandsüberwachung + Vis-ausgabe:
ich kann TADO auch aus dem Skript herausnehmen. Ist kein Problem, da ich die TADO Werte einzeln separat in der VIS anzeige.
Schon klar, aber is ja nich Sinn der Sache, das muß das Skript können, hab grad nur nich so viel Zeit, aber werd das mal nachstellen, kann ja nich sein.
-
@pittini
Hallo erst mal danke für das tolle Skipt
mir ist jetzt schon einige male aufgefallen das der Datenpunkt LastMessage nicht befüllt wird.
Hatte gerade wieder den Fall. habe mal einen Sceenshot von den DP`s und der vis Tabelle gemacht, wenn ich das skipt jetzt neu starte passt es wieder evtl. kannst du ja mal schauen.
Ist jetzt nicht tragich da er ja in der Vis Rot blinkt sieht man ja das was ist, muss halt nur in der Tabelle schauen wer es ist
-
@frank579 Mach da bitte ein Issue bei Git, sonst geht das unter da ich grad kaum Zeit hab.
-
@pittini danke für die schnelle Antwort okay muss ich mich dann aber mal rein arbeiten hab ich noch nie gemacht ... Kommt aber ...
-
@Pittini Super Script. Läuft ohne Probleme. Ich nutze mehrere Telegram Instanzen bzw. möchte die Meldung auf einen User begrenzen. Für Alexa und Pushover gibt es Einstellmöglichkeiten im "User-Bereich" am Anfang des Scriptes. Für Telegram habe ich dort nichts gefunden und direkt im Code geändert. Habe ich etwas übersehen?
-
@bkuerby sagte in [Vorlage] Generische Batteriestandsüberwachung + Vis-ausgabe:
@Pittini Super Script. Läuft ohne Probleme. Ich nutze mehrere Telegram Instanzen bzw. möchte die Meldung auf einen User begrenzen. Für Alexa und Pushover gibt es Einstellmöglichkeiten im "User-Bereich" am Anfang des Scriptes. Für Telegram habe ich dort nichts gefunden und direkt im Code geändert. Habe ich etwas übersehen?
Nein, da haste nix übersehen denk ich. Ich nutze das halt nicht selber (also das Skript schon, nur die Messaging Optionen nicht), sondern bau das ein wenn von Usern gewünscht. Wenn Du da was brauchst und es sogar schon umgesetzt hast, dann lass mir die Änderung zukommen und ich gugg mal das fürs nächste update zu übernehmen.
-
@pittini Aber gerne doch. Hier die Änderungen oder möchtest Du lieber das komplette Script? Ist getestet und hat funktioniert.
//Zeile 14 im Original-Script v1.8.1 gelöscht, jetzt im Telegram-Bereich //Eingefügt im Userbereich //Variablen für Telegram const UseTelegram = true; // Sollen Nachrichten via Telegram gesendet werden? const TelegramInstance = "telegram.1"; //Telegraminstanz welche genutzt werden soll angeben const TelegramUser = ''; //Welche User sollen die Nachricht bekommen? Leer lassen für alle User. Mehrere User getrennt durch Komma. //Ab Zeile 256 im Original-Script v1.8.1 angepasst: if (UseTelegram) { sendTo(TelegramInstance, "send", { user: TelegramUser, text: msg }); };
-
@bkuerby Und zack isses drin, V1.8.2. Danke.
-
Habe mir das skript nach Anleitung eingerichtet, aber ich bekomme folgende Fehlermeldung:
22:10:33.513 error javascript.0 (24872) at CheckNextLowBatt (script.js.common.Batteriestatus:379:91) 22:10:33.513 error javascript.0 (24872) at main (script.js.common.Batteriestatus:251:5) 22:10:33.514 error javascript.0 (24872) at Object.<anonymous> (script.js.common.Batteriestatus:110:13)
Und im Log:
javascript.0 2021-10-07 21:10:33.515 error at processImmediate (internal/timers.js:463:21) javascript.0 2021-10-07 21:10:33.514 error at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1988:38) javascript.0 2021-10-07 21:10:33.514 error at Object.<anonymous> (script.js.common.Batteriestatus:110:13) javascript.0 2021-10-07 21:10:33.513 error at main (script.js.common.Batteriestatus:251:5) javascript.0 2021-10-07 21:10:33.513 error at CheckNextLowBatt (script.js.common.Batteriestatus:379:91) javascript.0 2021-10-07 21:10:33.511 error Error in callback: TypeError: Cannot read property 'value' of undefined
Und hier das Skript:
const Version = "1.8.2"; // Batterieüberwachungsskript Stand 26.06.2021 - Git: https://github.com/Pittini/iobroker-Batterienauswertung - Forum: https://forum.iobroker.net/topic/31676/vorlage-generische-batteriestandsüberwachung-vis-ausgabe //Überwacht Batteriespannungen beliebig vieler Geräte log("starting Batterieüberwachung V." + Version); //WICHTIG!!! //Vorraussetzungen: Den Gerätechannels müssen Räume, sowie die Funktion "BatterieSpannung_xx" für jeden entsprechenden Batteriespannungs Datenpunkt zugewiesen sein. //Bitte unbedingt Anleitung beachten // Nach der Zuweisung unbedingt den JS Adpter neu starten! //Grund Einstellungen const praefix = "javascript.0.BatterieUeberwachung."; //Grundpfad für Script DPs const logging = false; //Logging aktivieren? const FunktionBaseName = "BatterieSpannung_"; //Name der Funktion welche für die Batterieüberwachung genutzt wird const DeadFunktionName = "DeadCheck"; //Name der Funktion welche für den DeadCheck genutzt wird const UseMail = false; // Sollen Nachrichten via Mail gesendet werden? const UseSay = false; // Sollen Nachrichten via Say ausgegeben werden? Funktion des Authors, sollte bei Anwendern auf false gesetzt werden. const UseEventLog = false; // Sollen Nachrichten ins Eventlog geschreiben werden? Funktion des Authors, sollte bei Anwendern auf false gesetzt werden. const UsePopUp = false // Soll PopUp angezeigt werden? Funktion des Authors, sollte bei Anwendern auf false gesetzt werden. const ProzMeansLive = true; //Zeigen Prozentwerte des Gerätedatenpunktes Batteriekapazität oder restliche Lebensdauer? let DeadIsAfter = 360; // In Minuten - Zeit nach der ein Gerät als "tot" gewertet wird wenn keine Statusänderung (ts) erfolgte. const NotifyDeadDevices = true; //Sollen "tote" Geräte gemeldet werden? const NotifyWarnDevices = true;//Sollen Geräte unter Limit gemeldet werden? const DeconzNameFromDP = false; //Nimmt für Deconz den Namen aus dem Datenpunkt statt aus dem übergeordnetem Channel //Variablen für Alexa const UseAlexa = true; // Sollen Nachrichten via Alexa ausgegeben werden? const AlexaInstance = "alexa2.0"; const AlexaId = "G090U61091870A1W"; // Die Alexa Seriennummer const AlexaVolume = "50"; // Lautstärke der Nachrichten. Wert von 1 bis 100 //Variablen für Pushover const UsePushover = true; //Sollen Nachrichten via Pushover versendet werden? const PushoverDevice = 'All'; //Welches Gerät soll die Nachricht bekommen const PushoverInstance = "pushover.0"; //Pushoverinstanz welche genutzt werden soll angeben const PushOverTitle = 'Batterien überprüfen'; //Variablen für Telegram const UseTelegram = false; // Sollen Nachrichten via Telegram gesendet werden? const TelegramInstance = "telegram.1"; //Telegraminstanz welche genutzt werden soll angeben const TelegramUser = ''; //Welche User sollen die Nachricht bekommen? Leer lassen für alle User. Mehrere User getrennt durch Komma. //Tabellen Einstellungen const TblOkBgColor = "#4caf50"; //Hintergrundfarbe für Batteriestatus Ok const TblInfoBgColor = "#ffc107"; //Hintergrundfarbe für Batteriestatus Info, also die leerste Batterie welche noch nicht das Limit unterschreitet const TblWarnBgColor = "#f44336"; //Hintergrundfarbe für Batteriestatus Warnung, also jene Batterie welche unter das Limit kam. const TblDeadBgColor = "grey"; //Hintergrundfarbe für Batterie/Geräte Status tot. const HeadBgColor = "dimgrey"; //Hintergrundfarbe des Tabellenkopfes const FontColor = "black"; //Textfarbe für Tabelleninhalt const HeadFontColor = "white"; //Textfarbe für Tabellenkopf const TblShowLfdCol = true; //Tabellenspalte mit laufender Nummer anzeigen? const TblShowDeviceIDCol = true; //Tabellenspalte mit Geräte ID anzeigen? const TblShowDeviceNameCol = true; //Tabellenspalte mit Gerätenamen anzeigen? const TblShowRoomCol = true; //Tabellenspalte mit Raum anzeigen? const TblShowUmaxCol = true; //Tabellenspalte mit Batterie Nennspannung anzeigen? const TblShowUistCol = true; //Tabellenspalte mit aktueller Batteriespannung anzeigen? const TblShowUlimitCol = true; //Tabellenspalte mit unterer Batterielimit Spannung anzeigen? const TblShowProzbatCol = true; //Tabellenspalte mit Batteriestand in Prozent anzeigen? const TblShowProzliveCol = true; //Tabellenspalte mit Restlebensdauer unter Berücksichtigung der Limitspannung in Prozent anzeigen? Beispiel: Batterie hat 3V Nennspannung, Limit ist bei 2V, aktueller Batteriestand ist 2.5V, dann wäre die Restlebensdauer 50% const TblShowStatusCol = true; //Tabellenspalte mit Status ausgeben? const TblShowHasDeadCheck = true; //Tabellenspalte mit DeadCheckstatus ausgeben? //Ab hier nix mehr ändern /** @type {{ id: string, initial: any, forceCreation: boolean, common: iobJS.StateCommon }[]} */ const States = []; //States Array initialisieren let DpCount = 0; //Zähler für anzulegende Datenpunkte const Sensor = [] //Sensoren Array initialisieren const BatteryMinLimitDp = []; //Array mit den generierten MinLimit Einstellungsdatenpunkten const WelcheFunktionVerwenden = []; // Array mit allen Einträgen aus Funktionen welche den FunktionBaseName beinhalten let AllBatterysOk = true; let LastMessageSeparator = "<br>"; let NextExpectedLowBatt = ""; let EmptyBatCount = 0; let DeadDeviceCount = 0; let TickerObj; let IsInit = true; //Datenpunkte anlegen in javascript.0.BatterieUeberwachung. States[DpCount] = { id: praefix + "AllBatterysOk", initial: true, forceCreation: false, common: { read: true, write: false, name: "Alle Batterien Ok?", type: "boolean", role: "state", def: false } }; // DpCount++; States[DpCount] = { id: praefix + "LastMessage", initial: "", forceCreation: false, common: { read: true, write: false, name: "Letzte Warnmeldung", type: "string", role: "state", def: "" } }; // DpCount++; FillWelcheFunktionVerwenden(); //Vorab Funktionen mit Umax Spannungen einlesen da diese für ID und Namen der MinLimit States benötigt werden for (let x = 0; x < WelcheFunktionVerwenden.length; x++) { let dummy = WelcheFunktionVerwenden[x].slice(FunktionBaseName.length) //Letzten Zeichen aus Funktionsnamen extrahieren let VoltInitial = CreateUmaxValueFromString(x) //Extrahierte Zeichen zu Kommazahl wandeln VoltInitial = VoltInitial / 100 * 80; //Initialwert für Limit berechnen if (logging) log("InitialSpannung " + x + " gesetzt auf 80%= " + VoltInitial); States[DpCount] = { id: praefix + "BatteryMinLimit_" + dummy, initial: VoltInitial, forceCreation: false, common: { read: true, write: true, name: "Unteres Limit für Warnmeldung bei " + toFloat(dummy.slice(0, dummy.length - 1) + "." + dummy.slice(-1)) + "V Geräten", type: "number", role: "value", unit: "V", def: 2.6 } }; // BatteryMinLimitDp[x] = "BatteryMinLimit_" + dummy; DpCount++; }; States[DpCount] = { id: praefix + "NextExpectedLowBatt", initial: "", forceCreation: false, common: { read: true, write: false, name: "Vorraussichtlich nächste zu wechselnde Batterie", type: "string", role: "state", def: "" } }; // DpCount++; States[DpCount] = { id: praefix + "OverviewTable", initial: "", forceCreation: false, common: { read: true, write: false, name: "Einfache HTML Übersichtstabelle", type: "string", role: "state", def: "" } }; // DpCount++; States[DpCount] = { id: praefix + "EmptyBatCount", initial: 0, forceCreation: false, common: { read: true, write: false, name: "Zähler für Anzahl der zu wechselnden Batterien", type: "number", role: "state", def: 0 } }; // DpCount++; States[DpCount] = { id: praefix + "DeadDeviceCount", initial: 0, forceCreation: false, common: { read: true, write: false, name: "Zähler für Anzahl der nicht mehr aktualisierenden Geräte", type: "number", role: "state", def: 0 } }; // DpCount++; States[DpCount] = { id: praefix + "DeviceCount", initial: 0, forceCreation: false, common: { read: true, write: false, name: "Zähler für Anzahl der überwachten Geräte", type: "number", role: "state", def: 0 } }; // DpCount++; States[DpCount] = { id: praefix + "DeadCheckCount", initial: 0, forceCreation: false, common: { read: true, write: false, name: "Zähler für Anzahl der gesetzten DeadChecks", type: "number", role: "state", def: 0 } }; // //Alle States anlegen, Main aufrufen wenn fertig let numStates = States.length; States.forEach(function (state) { createState(state.id, state.initial, state.forceCreation, state.common, function () { numStates--; if (numStates === 0) { if (logging) log("CreateStates fertig!"); main(); }; }); }); function CreateUmaxValueFromString(x) { let dummy = WelcheFunktionVerwenden[x].slice(FunktionBaseName.length) //Aus der Funktionsbezeichnung die letzten Zeichen extrahieren= z.B. 33 return toFloat(dummy.slice(0, dummy.length - 1) + "." + dummy.slice(-1)) //Die extrahierten Zeichen zu einer Kommazahl wandeln= z.B. 3.3 } function Init() { if (logging) log("Reaching init()"); let counter = 0; //Zähler für Devices let TempVal // Temporärer Sensorwert um nicht mehrere GetStates zu benötigen let TempUnit //Einheit für Unterscheidung ob % vorliegen // let TempLiveWindow //Spannungsfensterbereich let Funktionen = getEnums('functions'); //Alle Funktionen der Aufzählung in Array Funktionen übertragen for (let x in Funktionen) { // loop ueber alle Funktionen let Funktion = Funktionen[x].name; // Einzelne Funktion aus dem Array if (typeof Funktion == 'object') Funktion = Funktion.de; //Wenn Rückgabewert ein Objekt ist, ist die Funktion mehrsprachig und es wird die deutsche Bezeichnug verwendet let members = Funktionen[x].members; //Array mit allen Mitgliedern der Funktion erzeugen for (let z = 0; z < WelcheFunktionVerwenden.length; z++) { //Loop über alle Funktions welche zu WelcheFunktionVerwenden passen if (Funktion == WelcheFunktionVerwenden[z]) { //Wenn Function ist WelcheFunktionVerwenden (BatterieSpannung) let Umax = CreateUmaxValueFromString(z) //Batteriesollspannung aus der Funktionsbezeichnung extrahieren let BattMinLimitTemp = getState(praefix + "BatteryMinLimit_" + WelcheFunktionVerwenden[z].slice(FunktionBaseName.length)).val; //Temporäres (für den jeweiligen Schleifendurchlauf) MinLimit einlesen if (typeof (BattMinLimitTemp == "string")) { //Falls MinLimit Wert String ist zu float wandeln //log("BattMinLimit Value is String, trying to convert"); BattMinLimitTemp = parseFloat(BattMinLimitTemp); if (typeof (BattMinLimitTemp == "number")) { if (logging) log("BattMinLimit Value conversion - success"); }; }; for (let y in members) { // Loop über alle WelcheFunktionVerwenden Members Sensor[counter] = {}; Sensor[counter].id = members[y]; //Treffer in SenorIDarray einlesen TempVal = getState(Sensor[counter].id).val;//Wert vom Sensor in Tempval einlesen um wiederholte Getstates zu vermeiden if (typeof (TempVal) == "undefined") TempVal = 0; //Bei leeren Feldern 0 setzen um Fehler zu vermeiden if (typeof (TempVal) == "string") { //Wenn Wert als String deklariert obwohl Zahl if (!isNaN(parseFloat(TempVal))) { //Wenn konvertierung kein NaN ergibt TempVal = parseFloat(TempVal); //Konvertieren }; }; if (logging) log("existsState(Sensor[counter].id)=" + existsState(Sensor[counter].id) + " typeof (getState(Sensor[counter].id).val)=" + typeof (getState(Sensor[counter].id).val) + " getState(Sensor[counter].id).val=" + getState(Sensor[counter].id).val) Sensor[counter].state = ""; Sensor[counter].unit = GetUnit(counter); if (logging) log("Tempval=" + TempVal + " TempUnit=" + TempUnit + " TypeOf=" + typeof (TempVal)); Sensor[counter].uMax = Umax; //Synchrones UmaxArray füllen Sensor[counter].batteryMinLimit = BattMinLimitTemp; MainCalc(TempVal, counter) if (Sensor[counter].liveProz > 100) Sensor[counter].liveProz = 100; //Um bei übervollen Batterien mehr als 100% live zu vermeiden if (logging) log(counter + " " + Funktion + ' found at ' + members[y] + " Umax= " + Sensor[counter].uMax + " BattMinLimit=" + BattMinLimitTemp + " Val= " + Sensor[counter].value + " SensorProzent= " + Sensor[counter].uProz); counter++; }; setState(praefix + "DeviceCount", counter, true); }; }; }; } function MainCalc(TempVal, counter) { if (logging) log("Reaching MainCalc, TempVal=" + TempVal + " counter=" + counter); let TempLiveWindow = Sensor[counter].uMax - Sensor[counter].batteryMinLimit; switch (typeof (TempVal)) { //Wenn der Sensorwert bool ist (wenn nur LowBatt mit true/false vom Sensor gemeldet wird) case "boolean": //Sensorval ist Bool if (TempVal) { //Bei Lowbat=true Sensor[counter].value = 0; //Batt wird als leer definiert und auf 0 gesetzt Sensor[counter].uProz = 0; //Prozentwerte aus Umax und Sensorwert errechnen Sensor[counter].liveProz = 0; //Lebensprozent auf 0% } else { Sensor[counter].value = Sensor[counter].uMax; //Batt wird als voll definiert und auf Umax gesetzt Sensor[counter].uProz = 100; //Prozentwerte aus Umax und Sensorwert errechnen Sensor[counter].liveProz = 100; //Lebensprozent auf 100% }; break; case "number": //Sensorval ist Zahl switch (Sensor[counter].unit) { //Bei Zahlen nach Einheit unterscheiden um % Angaben mit zu verarbeiten case "%": //Bei Datenpunkt Unit = % //if (logging) log("unit= " + TempUnit + " should be %"); if (ProzMeansLive) { // Wenn die Prozentangabe bereits Lebensdauer zeigt (Einstellungsoption) Sensor[counter].liveProz = TempVal; //Direkt zuweisen aus Sensorwert Sensor[counter].value = Sensor[counter].uMax - TempLiveWindow + (TempLiveWindow / 100 * Sensor[counter].liveProz); Sensor[counter].uProz = (Sensor[counter].value / Sensor[counter].uMax) * 100 //Errechne Batteriekapazität } else if (!ProzMeansLive) { //Wenn die Prozentangabe Batteriekapazität darstellt (Einstellungsoption) Sensor[counter].uProz = TempVal; //Batteriekapazität in % bestimmen Sensor[counter].value = Sensor[counter].uMax / 100 * Sensor[counter].uProz; //Sensorwert aus Umax und Prozentwert bestimmen Sensor[counter].liveProz = (Sensor[counter].value - Sensor[counter].batteryMinLimit) / (Sensor[counter].uMax - Sensor[counter].batteryMinLimit) * 100; //Restlebensdauer in % ermitteln }; break; default: // In allen anderen Fällen Sensor[counter].value = TempVal; //Spannung ist Wert vom DP Sensor[counter].uProz = Sensor[counter].value / Sensor[counter].uMax * 100; //Prozentwerte aus Umax und Sensorwert errechnen Sensor[counter].liveProz = (Sensor[counter].value - Sensor[counter].batteryMinLimit) / (Sensor[counter].uMax - Sensor[counter].batteryMinLimit) * 100; //Restlebensdauer in % ermitteln }; break; case "string": //Sensorval ist Text if (TempVal == "ok" || TempVal == "NORMAL") { Sensor[counter].value = Sensor[counter].uMax; //Batt wird als voll definiert und auf Umax gesetzt Sensor[counter].uProz = 100; //Prozentwerte aus Umax und Sensorwert errechnen Sensor[counter].liveProz = 100; //Lebensprozent auf 100% } else { //Bei BatteryState != ok Sensor[counter].value = 0; //Batt wird als leer definiert und 0.1 unter MinLimit gesetzt Sensor[counter].uProz = 0; //Prozentwerte aus Umax und Sensorwert errechnen Sensor[counter].liveProz = 0; //Lebensprozent auf 0% }; break; default: }; } function FillWelcheFunktionVerwenden() { if (logging) log("Reaching FillWelcheFunktionVerwenden"); let z = 0; let Funktionen = getEnums('functions'); //Alle Funktionen der Aufzählung in Array Funktionen übertragen for (let x in Funktionen) { // loop ueber alle Funktionen let Funktion = Funktionen[x].name; // Einzelne Funktion aus dem Array if (typeof Funktion == 'object') Funktion = Funktion.de; //Wenn Rückgabewert ein Objekt ist, ist die Funktion mehrsprachig und es wird die deutsche Bezeichnung verwendet if (Funktion.includes(FunktionBaseName)) { WelcheFunktionVerwenden[z] = Funktion; if (logging) log("Found Function " + WelcheFunktionVerwenden[z]); z++; }; }; } function main() { if (logging) log("Reaching main()"); Init(); //Alle Werte einlesen, Arrays füllen, fehlende Werte errechnen if (IsInit) CreateTrigger(); // Trigger erzeugen CheckAllBatterys(); // Alle Batteriestände prüfen CheckAllBatterysOk(); CheckNextLowBatt(); // Batterie mit niedrigster Spannung finden MakeTable(); //HTML Tabelle erzeugen if (IsInit) Ticker(); //Startet Intervallprüfung für nicht aktualisierende Geräte IsInit = false; } function Meldung(msg) { log("Reaching Meldung(), msg=" + msg); if (UseSay) Say(msg); if (UseTelegram) { sendTo(TelegramInstance, "send", { user: TelegramUser, text: msg }); }; if (UseMail) { sendTo("email", { html: msg }); }; if (UseAlexa) { if (AlexaId != "") setState(AlexaInstance + ".Echo-Devices." + AlexaId + ".Commands.announcement"/*announcement*/, AlexaVolume + "; " + msg); }; if (UsePushover) { sendTo(PushoverInstance, { device: PushoverDevice, message: msg, title: PushOverTitle, priority: 0, retry: 60, expire: 600, html: 1 }); }; if (logging) log(msg); if (UseEventLog) WriteEventLog(msg); if (UsePopUp) ShowPopUp(true, msg, "Batterys", "red"); } function CheckDeadBatt() { if (logging) log("Reaching CheckDeadBatt()"); let jetzt = new Date().getTime(); let Funktionen = getEnums('functions'); //Alle Funktionen der Aufzählung in Array Funktionen übertragen DeadDeviceCount = 0; let members; let counter = 0; for (let y in Funktionen) { // loop ueber alle Funktionen let Funktion = Funktionen[y].name; // Einzelne Funktion aus dem Array if (typeof Funktion == 'object') Funktion = Funktion.de; //Wenn Rückgabewert ein Objekt ist, ist die Funktion mehrsprachig und es wird die deutsche Bezeichnung verwendet if (Funktion.includes(DeadFunktionName)) { members = Funktionen[y].members; //Array mit allen Mitgliedern der Funktion erzeugen }; }; for (let x = 0; x < Sensor.length; x++) { //Alle Sensoren durchlaufen if (existsState(Sensor[x].id)) { let ParentDeviceId = GetParentId(Sensor[x].id); Sensor[x].isDead = false; Sensor[x].hasDeadCheck = false; //Check at Extra Function Datapoint DeadCheck for (let z in members) { if (members[z].includes(ParentDeviceId)) { //Jetzt prüfen ob Funktion DeadCheck innerhalb des Channels Sensor[x].hasDeadCheck = true; if (logging) log("Device " + ParentDeviceId + " has Deadcheck, now checking"); if (logging) log("z=" + z + " Device " + ParentDeviceId + " check at " + members[z]); if ((getState(members[z]).ts + (DeadIsAfter * 60 * 1000)) < jetzt) { if (logging) log("Deadcheck failed, " + ParentDeviceId + " seems to be dead"); Sensor[x].isDead = true; } else { if (logging) log(ParentDeviceId + " is not dead"); Sensor[x].isDead = false; }; counter++; }; }; setState(praefix + "DeadCheckCount", counter, true); //Reaction after checks if (Sensor[x].isDead) { if (logging) log("Jim...he's dead") if (Sensor[x].state != "dead") { //Wenn Sensor bei vorheriger Prüfung noch nicht tot, Meldung absetzen. CheckForAlerts() }; Sensor[x].state = "dead"; //Status auf tot setzen DeadDeviceCount++; //Zähler ehöhen } else { if (Sensor[x].state == "dead") { //Wenn Sensor bisher als tot gelistet, aber wieder aktualisiert, Status prüfen Sensor[x].state = "ok"; Sensor[x].isDead = false; CheckBatterys(x); }; }; } else { log("CheckDeadBatt() State for " + x + " doesnt exists"); }; if (x == Sensor.length - 1) { //Ausführung erst wenn Schleife komplett durch ist (async) setState(praefix + "DeadDeviceCount", DeadDeviceCount, true); MakeTable(); }; }; } function Ticker() { CheckDeadBatt(); //Auf nicht mehr aktualisierende Geräte seit Zeit x (Einstellung) prüfen setInterval(function () { // Wenn CheckDeadBatt(); }, 60000); } function CheckNextLowBatt() { //Ermittelt die Batterie mit der geringsten Spannung, ignoriert Batterien welche das Limit bereits unterschritten haben da diese bereits in der LastMessage gemeldet werden if (logging) log("Reaching CheckNextLowBatt()"); let LowestBattProz = 100; //Mit 100% initialisieren let LowestBattIndex = 0; for (let x = 0; x < Sensor.length; x++) { //Alle Sensoren durchlaufen if (Sensor[x].state != "warn" && Sensor[x].state != "dead") Sensor[x].state = "ok"; if (Sensor[x].value > Sensor[x].batteryMinLimit) { // Nur Sensoren berücksichtigen die das min Limit noch nicht unterschritten haben if (Sensor[x].liveProz <= LowestBattProz) { //Wenn Sensorwert kleiner LowestBattProz, LowestBattVal auf neuen Wert setzen um das Gerät mit den wenigsten Prozent zu ermitteln LowestBattProz = Sensor[x].liveProz; LowestBattIndex = x; }; }; }; NextExpectedLowBatt = "Aktuell niedrigster Batteriestand (" + Sensor[LowestBattIndex].value.toFixed(2) + "V): " + GetRoom(LowestBattIndex) + " bei Gerät " + getObject(GetParentId(Sensor[LowestBattIndex].id), "common").common.name; setState(praefix + "NextExpectedLowBatt", NextExpectedLowBatt, true); Sensor[LowestBattIndex].state = "info"; if (logging) log(NextExpectedLowBatt); } function CheckAllBatterysOk() { if (logging) log("Reaching CheckAllBatterysOk"); AllBatterysOk = true; EmptyBatCount = 0; for (let x = 0; x < Sensor.length; x++) { //Alle Sensoren durchlaufen if (Sensor[x].value <= Sensor[x].batteryMinLimit) { // Nur Sensoren berücksichtigen die das min Limit unterschritten haben AllBatterysOk = false; EmptyBatCount++; //Alle Sensoren zählen welche das Batt min Limit unterschritten haben }; }; if (DeadDeviceCount > 0) AllBatterysOk = false; setState(praefix + "EmptyBatCount", EmptyBatCount, true); setState(praefix + "AllBatterysOk", AllBatterysOk, true); } let OldTempMsg = ""; function CheckForAlerts() { if (logging) log("Reaching CheckLastMessage, EmptyBatCount=" + EmptyBatCount + " DeadDeviceCount=" + DeadDeviceCount); let TempMsg = ""; for (let x = 0; x < Sensor.length; x++) { //Alle Sensoren durchgehen if (Sensor[x].message != "" && NotifyWarnDevices) { //Wenn msg vorhanden und Warnungen aktiv if (TempMsg == "") { TempMsg = Sensor[x].message; } else { TempMsg += LastMessageSeparator + Sensor[x].message; }; }; if (Sensor[x].isDead && NotifyDeadDevices) { //Wenn msg vorhanden und Dead Warnungen aktiv if (TempMsg == "") { TempMsg = "Ausfall oder disconnect im " + GetRoom(x) + " bei Gerät " + getObject(GetParentId(Sensor[x].id)).common.name; } else { TempMsg += LastMessageSeparator + "Ausfall oder disconnect im " + GetRoom(x) + " bei Gerät " + getObject(GetParentId(Sensor[x].id)).common.name; }; }; }; if (TempMsg == "") { setState(praefix + "LastMessage", "", true); //Meldung in Datenpunkt LastMessage löschen if (logging) log("Alle Batterien ok, Lastmessage gelöscht"); } else if (OldTempMsg != TempMsg) { setState(praefix + "LastMessage", TempMsg, true); //Meldung in Datenpunkt LastMessage schreiben Meldung(TempMsg); }; OldTempMsg = TempMsg; } function CheckBatterys(x) { // Prüfung eines einzelnen Batteriestandes wenn getriggert if (logging) log("Reaching CheckBatterys(" + x + ") Val=" + Sensor[x].value + " Limit=" + Sensor[x].batteryMinLimit); if (Sensor[x].value <= Sensor[x].batteryMinLimit) { //Wenn Min. Wert unterschritten Sensor[x].message = "Batteriestand (" + parseInt(Sensor[x].value * 100) / 100 + " V) unter Limit (" + Sensor[x].batteryMinLimit + " V) im " + GetRoom(x) + " bei Gerät " + getObject(GetParentId(Sensor[x].id)).common.name; Sensor[x].state = "warn"; } else { Sensor[x].state = "ok"; Sensor[x].message = ""; }; CheckAllBatterysOk(); CheckNextLowBatt(); CheckDeadBatt(); CheckForAlerts(); MakeTable(); } function CheckAllBatterys() { // Prüfung aller Batteriestände bei Skriptstart if (logging) log("Reaching CheckAllBatterys() found " + (Sensor.length) + " Devices"); for (let x = 0; x < Sensor.length; x++) { //Alle Sensoren durchlaufen if (Sensor[x].state == "dead") { if (logging) log("Sensor[" + x + "] = ist ausgefallen oder disconnected"); Sensor[x].isDead = true; } else if (Sensor[x].value <= Sensor[x].batteryMinLimit) { //Wenn Min. Wert unterschritten if (logging) log("SensorVal[" + x + "] = " + Sensor[x].value + "V, unterschreitet MinLimit von " + Sensor[x].batteryMinLimit + " V"); Sensor[x].message = "Batteriestand (" + parseInt(Sensor[x].value * 100) / 100 + " V) unter Limit (" + Sensor[x].batteryMinLimit + " V) im " + GetRoom(x) + " bei Gerät " + getObject(GetParentId(Sensor[x].id)).common.name; Sensor[x].state = "warn"; } else { if (Sensor[x].state != "info" && Sensor[x].state != "dead") { Sensor[x].state = "ok"; Sensor[x].isDead = false; Sensor[x].message = ""; } }; }; CheckForAlerts(); } function GetRoom(x) { // Raum eines Gerätes ermitteln let room = getObject(Sensor[x].id, 'rooms').enumNames[0]; if (room == undefined) room = "Nicht zugewiesen"; if (typeof room == 'object') room = room.de; room = room.replace(/_/g, " "); //Unterstriche durch Leerzeichen ersetzen return room; } function GetUnit(x) { let unit = getObject(Sensor[x].id, 'common').common.unit return unit; } function GetParentId(Id) { let parentDevicelId; if (Id.indexOf("deconz.") > -1 || Id.indexOf("hm-rpc.") > -1 || Id.indexOf("shelly.") > -1) { //Wenn deconz, hm-rpc oder shelly dann zwei Ebenen zurück parentDevicelId = Id.split(".").slice(0, -2).join(".");// Id an den Punkten in Array schreiben (split), die 2 letzten Elemente von hinten entfernen (slice) und den Rest wieder zu String zusammensetzen } else if (Id.indexOf("hmip.") > -1) { //Wenn HMIP dann drei Ebenen zurück parentDevicelId = Id.split(".").slice(0, -3).join(".");// Id an den Punkten in Array schreiben (split), die 3 letzten Elemente von hinten entfernen (slice) und den Rest wieder zu String zusammensetzen } else { //Wenn kein deconz, kein HM und kein shelly Adapter, eine Ebene zurück parentDevicelId = Id.split(".").slice(0, -1).join(".");// Id an den Punkten in Array schreiben (split), das letzte Element von hinten entfernen (slice) und den Rest wieder zu String zusammensetzen }; if (DeconzNameFromDP && Id.indexOf("deconz.") > -1) parentDevicelId = Id; //if (logging) log("Id= " + Id + " ParentDeviceId= " + parentDevicelId) return parentDevicelId; } function MakeTable() { if (logging) log("Reaching MakeTable"); let BgColor = ""; let style0 = "style='border: 1px solid black; padding-left: 5px; padding-right: 5px; font-size:0.8em; font-weight: normal; text-align: left; color:" + FontColor + "; background-color:" let style1 = "style='width: 40px; border: 1px solid black; padding-left: 5px; padding-right: 5px; font-size:0.8em; font-weight: normal; text-align: right; color:" + FontColor + "; background-color:" let headstyle0 = "style='border: 1px solid black; padding-left: 5px; padding-right: 5px; height: 30px; font-size:1.0em; font-weight: bold; text-align: left; color:" + HeadFontColor + "; background-color:" let headstyle1 = "style='width: 40px; border: 1px solid black; padding-left: 5px; padding-right: 5px; height: 30px; font-size:1.0em; font-weight: bold; text-align: center; color:" + HeadFontColor + "; background-color:" let MyTableHead = "<table style='width:100%; border: 1px solid black; border-collapse: collapse;'><tr>"; let MyTable; if (TblShowLfdCol) { MyTableHead += "<th " + headstyle0 + HeadBgColor + "'>lfd</th>"; }; if (TblShowDeviceIDCol) { MyTableHead += "<th " + headstyle0 + HeadBgColor + "'>Sensor ID</th>"; }; if (TblShowDeviceNameCol) { MyTableHead += "<th " + headstyle0 + HeadBgColor + "'>Sensor Name</th>"; }; if (TblShowRoomCol) { MyTableHead += "<th " + headstyle0 + HeadBgColor + "'>Raum</th>"; }; if (TblShowUmaxCol) { MyTableHead += "<th " + headstyle1 + HeadBgColor + "'>U<br>Nenn</th>"; }; if (TblShowUistCol) { MyTableHead += "<th " + headstyle1 + HeadBgColor + "'>U<br>Ist</th>"; }; if (TblShowUlimitCol) { MyTableHead += "<th " + headstyle1 + HeadBgColor + "'>U<br>Limit</th>"; }; if (TblShowProzbatCol) { MyTableHead += "<th " + headstyle1 + HeadBgColor + "'>%bat</th>"; }; if (TblShowProzliveCol) { MyTableHead += "<th " + headstyle1 + HeadBgColor + "'>%live</th>"; }; if (TblShowStatusCol) { MyTableHead += "<th " + headstyle1 + HeadBgColor + "'>Status</th>"; }; if (TblShowHasDeadCheck) { MyTableHead += "<th " + headstyle1 + HeadBgColor + "'>DC</th>"; }; MyTableHead += "</tr>"; MyTable = MyTableHead + "<tr>"; for (let x = 0; x < Sensor.length; x++) { //Alle Sensoren durchlaufen switch (Sensor[x].state) { case "ok": BgColor = TblOkBgColor; break; case "info": BgColor = TblInfoBgColor; break; case "warn": BgColor = TblWarnBgColor; break; case "dead": BgColor = TblDeadBgColor; break; default: }; MyTable += "<tr>"; if (TblShowLfdCol) { MyTable += "<td " + style0 + BgColor + "'>" + (x + 1) + "</td>"; }; if (TblShowDeviceIDCol) { MyTable += "<td " + style0 + BgColor + "'>" + GetParentId(Sensor[x].id) + "</td>"; }; if (TblShowDeviceNameCol) { MyTable += "<td " + style0 + BgColor + "'>" + getObject(GetParentId(Sensor[x].id), "common").common.name + "</td>"; }; if (TblShowRoomCol) { MyTable += "<td " + style0 + BgColor + "'>" + GetRoom(x) + "</td>"; }; if (TblShowUmaxCol) { MyTable += "<td " + style1 + BgColor + "'>" + Sensor[x].uMax.toFixed(1) + "V</td>"; }; if (TblShowUistCol) { MyTable += "<td " + style1 + BgColor + "'>" + Sensor[x].value.toFixed(2) + "V</td>"; }; if (TblShowUlimitCol) { MyTable += "<td " + style1 + BgColor + "'>" + Sensor[x].batteryMinLimit.toFixed(2) + "V</td>"; }; if (TblShowProzbatCol) { if (typeof (Sensor[x].uProz) == "number") { MyTable += "<td " + style1 + BgColor + "'>" + Sensor[x].uProz.toFixed(1) + "%</td>"; } else { MyTable += "<td " + style1 + BgColor + "'>" + Sensor[x].uProz + "</td>"; }; }; if (TblShowProzliveCol) { if (typeof (Sensor[x].liveProz) == "number") { MyTable += "<td " + style1 + BgColor + "'>" + Sensor[x].liveProz.toFixed(1) + "%</td>"; } else { MyTable += "<td " + style1 + BgColor + "'>" + Sensor[x].liveProz + "</td>"; }; }; if (TblShowStatusCol) { MyTable += "<td " + style1 + BgColor + "'>" + Sensor[x].state + "</td>"; }; if (TblShowHasDeadCheck) { MyTable += "<td " + style1 + BgColor + "'>" + (Sensor[x].hasDeadCheck ? 'x' : '-') + "</td>"; }; MyTable = MyTable + "</tr>"; }; MyTable += "</table>"; setState(praefix + "OverviewTable", MyTable, true); } //Trigger für Sensoren erzeugen function CreateTrigger() { for (let x = 0; x < Sensor.length; x++) { //Alle Sensoren durchlaufen on(Sensor[x].id, function (dp) { //Trigger in Schleife erstellen let TempVal = dp.state.val; // let TempUnit = GetUnit(x); // let TempLiveWindow = Sensor[x].uMax - Sensor[x].batteryMinLimit; if (typeof (TempVal == "string")) { //Falls MinLimit Wert String ist zu float wandeln //log("Value is String, trying to convert"); if (!isNaN(parseFloat(TempVal))) { //Wenn konvertierung kein NaN ergibt if (logging) log("Value conversion from String to number - success"); TempVal = parseFloat(TempVal); //Konvertieren }; }; MainCalc(TempVal, x); CheckBatterys(x); //Prüfen }); }; for (let x = 0; x < WelcheFunktionVerwenden.length; x++) { //Alle Batteriefunktionen durchlaufen on(praefix + BatteryMinLimitDp[x], function (dp) { //Trigger erstellen und auslösen wenn min Limit geändert wurde. Dann erneute Komplettprüfung aller Batteriestände if (logging) log("Reaching Trigger for :" + praefix + BatteryMinLimitDp[x]) if (typeof (dp.state.val) != "number") { log("MinLimit Value not a Number, rather " + typeof (dp.state.val) + ", converting to number", "warn"); setState(praefix + BatteryMinLimitDp[x], parseFloat(dp.state.val), true) }; main(); //Neuzuweisung des geänderten Limits an alle Geräte }); }; onStop(function () { //Bei Scriptende alle Timer löschen if (typeof TickerObj == "object") clearInterval(TickerObj); }, 100); }
-
@johnnybahama Zeig mal nen Screenshot aus der Objektliste wo ich die Zuweisung seh.