Hallo
Ich nutze das Modul 70_UVRm.pm (als Anhang eingefügt ) um meine Heizungssteuerung UVR1611 auszulesen.
dadurch bekomme ich ein reading das so ausschaut.
Zitat2014-05-02_19:37:33 myuvr_messuebersicht UVR1611: 68.2 67.7 68.9 61.4 38.8 25.9 20.4 10.7 36.5 - - 1
Jede Zahl ist ein Temp Sensor.
jetzt möchte ich einzelne Temperaturen in der RSS anzeige darstellen dafür bräuchte ich einzelne Readings von jedem Sensor.
Kann man da auch einzelne Readings generieren, so das einmal das Komplette reading kommt und 16 einzelne readings Sensor1, Sensor2, Sensor3 usw.
Gruß Josty
Commandref-->userReadings in Kombination mit Perl-Substr
lg, Ici
Hallo
hab es jetzt so versucht:
Zitatattr myuvr_messuebersicht userReadings Sensor1 { ReadingsVal("myuvr_messuebersicht","UVR1611",0)}
Dann bekomme ich ein weiteres reading namens Sensor1 in dem aber das gleiche steht wie im reading UVR1611
müsste jetzt quasi nach leerzeichen trennen oder so.
Gruß Josty
Hallo
auch so
ZitatSensor1 { ReadingsVal("myuvr_messuebersicht","UVR1611 %EVTPART0",0)}
liefert Sensor1 nur 0 zurück.
Gruß Josty
http://lmgtfy.com/?q=perl+string+zerlegen (http://lmgtfy.com/?q=perl+string+zerlegen)
Hallo
ja schon klar denke das ist das richtige teile den String nach leerzeichen.
nur weis ich nicht wie ich das im Fhem einbaue.
Zitat#!/usr/bin/perl
use strict;
use warnings;
my $data = "Becky\n\nAlcorn";
my @values = split(' ',$data);
# Print 'aa' either side of the value, so we can see where it split
foreach my $val (@values) {
print "aa${val}aa\n";
}
Gruß Josty
Hallo
ok ich habs.
Zitatattr myuvr_messuebersicht userReadings Sensor01 { (split ' ',ReadingsVal("myuvr_messuebersicht","UVR1611",0))[0]}, Sensor02 {(split ' ',ReadingsVal("myuvr_messuebersicht","UVR1611",0))[1]}, Sensor03 { (split ' ',ReadingsVal("myuvr_messuebersicht","UVR1611",0))[2]} , Sensor04 { (split ' ',ReadingsVal("myuvr_messuebersicht","UVR1611",0))[3]} , Sensor05 { (split ' ',ReadingsVal("myuvr_messuebersicht","UVR1611",0))[4]} , Sensor06 { (split ' ',ReadingsVal("myuvr_messuebersicht","UVR1611",0))[5]} , Sensor07 { (split ' ',ReadingsVal("myuvr_messuebersicht","UVR1611",0))[6]} , Sensor08 { (split ' ',ReadingsVal("myuvr_messuebersicht","UVR1611",0))[7]}, Sensor09 { (split ' ',ReadingsVal("myuvr_messuebersicht","UVR1611",0))[8]}, Sensor10 { (split ' ',ReadingsVal("myuvr_messuebersicht","UVR1611",0))[9]}, Sensor11 { (split ' ',ReadingsVal("myuvr_messuebersicht","UVR1611",0))[10]}, Sensor12 { (split ' ',ReadingsVal("myuvr_messuebersicht","UVR1611",0))[11]}, Sensor13 { (split ' ',ReadingsVal("myuvr_messuebersicht","UVR1611",0))[12]}, Sensor14 { (split ' ',ReadingsVal("myuvr_messuebersicht","UVR1611",0))[13]}, Sensor15 { (split ' ',ReadingsVal("myuvr_messuebersicht","UVR1611",0))[14]}, Sensor16 { (split ' ',ReadingsVal("myuvr_messuebersicht","UVR1611",0))[15]}
Gruß Josty
Hallo,
würde den Code gerne für mich anpassen jedoch schaffe ich das nicht.....
mein Reading besteht aus einer Binärzahl mit 8 Stellen jede Position steht für eine Alarmanlagen-Komponente für ich gerne jeweils ein eigenes Reading erzeugen möchte kann mir dabei jemand helfen?
jetz sieht es so aus:
Alarmkomponente01 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000")), [1] },
Alarmkomponente02 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000")), [2] },
Alarmkomponente03 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000")), [3] },
Alarmkomponente04 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000")), [4] },
Alarmkomponente05 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000")), [5] },
Alarmkomponente06 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000")), [6] },
Alarmkomponente07 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000")), [7] },
Alarmkomponente08 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000")), [8] },
Alarmkomponente01
ARRAY(0x1d4eec8)
2017-11-06 20:12:43
Alarmkomponente02
ARRAY(0x1d58998)
2017-11-06 20:12:43
Alarmkomponente03
ARRAY(0x15e5e68)
2017-11-06 20:12:43
Alarmkomponente04
ARRAY(0x1d469b8)
2017-11-06 20:12:43
Alarmkomponente05
ARRAY(0x1d4f6f0)
2017-11-06 20:12:43
Alarmkomponente06
ARRAY(0x1d512e8)
2017-11-06 20:12:43
Alarmkomponente07
ARRAY(0x15e6270)
2017-11-06 20:12:43
Alarmkomponente08
ARRAY(0x1d22098)
2017-11-06 20:12:43
AusTrittVerz1
OFF
2017-11-06 10:10:58
EinTrittVerz1
ON
2017-08-29 05:26:49
EinbAlarm1
OFF
2017-08-28 03:42:29
PG1
OFF
2017-11-06 10:05:40
PG2
OFF
2017-11-06 10:05:44
PG3
OFF
2017-11-06 10:05:47
PG4
OFF
2017-11-06 10:17:41
PRFSTATE
01000000
2017-11-06 20:12:43
Mfg Mani
So könnte das gehen:
Alarmkomponente01 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000"))[0] },
Alarmkomponente02 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000"))[1] },
Alarmkomponente03 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000"))[2] },
Alarmkomponente04 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000"))[3] },
Alarmkomponente05 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000"))[4] },
Alarmkomponente06 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000"))[5] },
Alarmkomponente07 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000"))[6] },
Alarmkomponente08 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000"))[7] },
Gruß,
Thorsten
Hallo Thorsten,
Danke wird schon besser;).... jetzt wird bei den readings immer eine 0 geschrieben jedoch sollte auf der 2. Pos eine 1 Stehen :( mach ich beim splitten noch was falsch?
Mfg Mani
Weiß ich nicht. Zeig mal ein "list PRFSTATE".
Gruß,
Thorsten
Hallo Thorsten,
list Alarm_PG PRFSTATE => Alarm_PG 2017-11-07 06:53:12 01000000
list Alarm_PG=> Internals:
Alarm_MSGCNT 3
Alarm_TIME 2017-11-07 06:53:12
DEF alarm
IODev Alarm
LASTInputDev Alarm
MSGCNT 3
NAME Alarm_PG
NR 42
STATE PRFSTATE 01000000
TYPE ECMDDevice
Readings:
2017-11-07 06:53:12 Alarmkomponente01 0
2017-11-07 06:53:12 Alarmkomponente02 0
2017-11-07 06:53:12 Alarmkomponente03 0
2017-11-07 06:53:12 Alarmkomponente04 0
2017-11-07 06:53:12 Alarmkomponente05 0
2017-11-07 06:53:12 Alarmkomponente06 0
2017-11-07 06:53:12 Alarmkomponente07 0
2017-11-07 06:53:12 Alarmkomponente08 0
2017-11-06 10:10:58 AusTrittVerz1 OFF
2017-08-29 05:26:49 EinTrittVerz1 ON
2017-08-28 03:42:29 EinbAlarm1 OFF
2017-11-06 20:20:27 PG1 OFF
2017-11-06 10:05:44 PG2 OFF
2017-11-06 10:05:47 PG3 OFF
2017-11-06 10:17:41 PG4 OFF
2017-11-07 06:53:12 PRFSTATE 01000000
2017-11-06 10:10:58 Status1 READY
2017-11-06 10:10:23 Status2 READY
2017-11-07 06:53:12 state PRFSTATE 01000000
Fhem:
classname alarm
Cache:
Readings:
Command:
PRFSTATE { /PRFSTATE (\d+)\r/; $_= sprintf("%08b", hex( $1 ) ); }
Match:
AusTrittVerz1 EXIT 1 (ON|OFF)\r
EinTrittVerz1 ENTRY 1 (ON|OFF)\r
EinbAlarm1 INTRUDER_ALARM 1 (ON|OFF)\r
PG1 (\n)?PG 1 (OFF|ON)\r
PG2 (\n)?PG 2 (OFF|ON)\r
PG3 (\n)?PG 3 (OFF|ON)\r
PG4 (\n)?PG 4 (OFF|ON)\r
PRFSTATE (\n)?PRFSTATE (\d+)\r
Status1 STATE 1 (ARMED|READY)\r
Status2 STATE 2 (ARMED|ARMED_PART|READY)\r
Specials:
%NAME Alarm_PG
%TYPE ECMDDevice
Attributes:
IODev Alarm
userReadings Alarmkomponente01 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000"))[0] },
Alarmkomponente02 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000"))[1] },
Alarmkomponente03 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000"))[2] },
Alarmkomponente04 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000"))[3] },
Alarmkomponente05 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000"))[4] },
Alarmkomponente06 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000"))[5] },
Alarmkomponente07 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000"))[6] },
Alarmkomponente08 {(split //,ReadingsVal("PRFSTATE","Alarm_PG","00000000"))[7] },
verbose 5
webCmd PG1ON:PG1OFF:PG2ON:PG2OFF:PG3ON:PG3OFF:PG4ON:PG4OFF:Statusabfrage
Mfg MANI
Hi,
1. bitte verwende code-Tags für sowas wie das list.
2. Dein ReadingsVal ist falsch herum. Zuerst kommt das Device, dann das Reading.
Gruß,
Thorsten
Hallo Super nun gehts :)
Mfg Mani