FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ChrisA4 am 07 Mai 2024, 20:42:18

Titel: reading aus mehreren readings als ist zustand
Beitrag von: ChrisA4 am 07 Mai 2024, 20:42:18
Hallo steh mal wieder vor einer Herausforderung

Würde gerne aus mehreren readings aus einem dev ein reading erstellen

bekomme als reading

Pool_Pumpe_100
   
0

Pool_Pumpe_40
   
0

Pool_Pumpe_70
   
1
   
Pool_Pumpe_90
   
0

Es sollte am Ende mit "Pumpe 70% Lauf" ercheinen, wenn dies möglich ist

gibt es überhaupt eine möglichkeit dies zu schaffen

Würde mich über Hilfe feuen
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: betateilchen am 07 Mai 2024, 21:04:32
Zitat von: ChrisA4 am 07 Mai 2024, 20:42:18gibt es überhaupt eine möglichkeit dies zu schaffen

Natürlich, am einfachsten per userReading.

Aber mich würde interessieren, wie diese vier readings an sich entstehen? Es macht doch wenig Sinn, drei readings überhaupt erst zu erzeugen, die gar nicht gebraucht werden.

defmod p dummy
attr p stateFormat Pumpe running% Lauf
attr p userReadings running:Pool_Pumpe_\d+:.* { $event =~ m/(\d+)/;; return $1}
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: ChrisA4 am 07 Mai 2024, 21:12:10
doch werden sie

das sind meldungen von einer poolpumpe mit verschiedenen Leistungsstufen über einen Frequenzumformer

daß ich nicht 4x "Pumpe ......."

würde ich gerne 1x "Pumpe 100% lauf" oder "Pumpe 40% lauf" stehen haben
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: Beta-User am 07 Mai 2024, 21:17:05
Zitat von: ChrisA4 am 07 Mai 2024, 21:12:10doch werden sie
Aha....
Eigentlich willst du doch nur
"Pumpe=0", oder "Pumpe=40", oder ....
Aber wenn man nicht weiß, was wie geliefert wird und was ggf. für die Weiterverarbeitung gebraucht wird, ist es Kaffeesatz, womit wir bei https://forum.fhem.de/index.php?topic=71806.0 wären...
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: betateilchen am 07 Mai 2024, 21:18:35
Es scheitert halt mal wieder an der möglichst einfachen Formulierung der eigentlichen Aufgabe.

Ich habe oben in meiner ersten Antwort eine der vielen möglichen Lösungen ergänzt.

Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: Beta-User am 07 Mai 2024, 21:51:33
Zitat von: betateilchen am 07 Mai 2024, 21:18:35Es scheitert halt mal wieder an der möglichst einfachen Formulierung der eigentlichen Aufgabe.
Ja, aber nur "bedingt""Eigentlich" hat der TE schon "irgendwie verständlich durchblicken lassen", was er "sehen" möchte - nur halt praktisch alle technischen Details nicht erwähnt, die man bräuchte, um eine tatsächlich "einfache" Lösung anzubieten.

Zitat von: betateilchen am 07 Mai 2024, 21:04:32Natürlich, am einfachsten per userReading.
Ob das nämlich "am einfachsten" (ggf. einfach nur im Sinne von "übersichtlichsten") ist, kann man m.E. erst in etwa abschätzen, wenn man weiß, wo bzw. wie die erwähnten Basisdaten in den Readings eigentlich herkommen.

Vermutlich irgendwas, was einen JSON-Blob schickt (oder seine Infos blödsinnig via MQTT auf mehrere Topics verteilt)...
Und _vermutlich_ will der User auch einen Regelkreis schaffen, also "irgendwas" an sein Device senden... (Bin mal gespannt, was es eigentlich ist, ggf. bitte auch neben dem "list/copy for forum" als "immerwährende Basis-Bringschuld" auch den Link zur Homepage des Projekts liefern...?).
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: ChrisA4 am 07 Mai 2024, 21:52:01
Sorry hatte gedacht ich hätte es einfach gemacht in meinem ersten beitrag tsja dann wol doch nicht

Also fang ich nochmals an

Habe folgenden dev erzeugt von einer CMI der Technischen Alternative

define COE_Node_cmi_2 COE_Node 2
attr COE_Node_cmi_2 alias Poolsteuerung
attr COE_Node_cmi_2 group Pool
attr COE_Node_cmi_2 readingsConfigAnalog 1=Kollektor_Temperatur_Pool_Solar 2=Pool_Wasser_Temperatur 3=Pool_Aussen_Temperatur
attr COE_Node_cmi_2 readingsConfigDigital 1=Pool_Pumpe_100 2=Pool_Pumpe_90 3=Pool_Pumpe_70 4=Pool_Pumpe_40 5=SchachtVentil_Gartenhaus 6=Schachtventil_Pool 7=Pos_Meldung_SchachtVentil_Gartenhaus 8=Pos_Meldung_Schachtventil_Pool 9=Wasserstand_Sensor 10=Ventile_Wasserzuleitung 11=Umschaltung_Wassermessung_1 12=Umschaltung_Wassermessung_2 13=Umschaltung_Solar_Ladung_1 14=Umschaltung_Solar_Ladung_2 15=T_Max_Begrenzung
attr COE_Node_cmi_2 room Pool
attr COE_Node_cmi_2 stateFormat {"Pool Temperatur: ".ReadingsVal($name,"Pool_Wasser_Temperatur",0)." °C<br> "}
#   CFGFN     
#   DEF        2
#   FUUID      663a6e9f-f33f-c95d-2fa7-7c8ff2808c2edf05
#   IODev      cmi
#   LASTInputDev cmi
#   MSGCNT     177
#   NAME       COE_Node_cmi_2
#   NR         711
#   STATE      Pool Temperatur: 22.4 °C<br>
#   TYPE       COE_Node
#   cmi_MSGCNT 177
#   cmi_TIME   2024-05-07 21:39:14
#   eventCount 130
#   READINGS:
#     2024-05-07 21:35:41   Kollektor_Temperatur_Pool_Solar 12.4
#     2024-05-07 20:57:40   PoolPumpe       Error evaluating COE_Node_cmi_2 userReading PoolPumpe: Can't modify non-lvalue subroutine call of &main::ReadingsVal in scalar assignment at (eval 94947200) line 1, near "1  "100""
#syntax error at (eval 94947200) line 1, near "1  "100""
#
#     2024-05-07 21:27:40   Pool_Aussen_Temperatur 13.8
#     2024-05-07 20:11:08   Pool_Pumpe_100  0
#     2024-05-07 20:11:08   Pool_Pumpe_40   1
#     2024-05-07 20:11:08   Pool_Pumpe_70   1
#     2024-05-07 20:11:08   Pool_Pumpe_90   0
#     2024-05-07 21:38:41   Pool_Wasser_Temperatur 22.4
#     2024-05-07 20:11:08   Pos_Meldung_SchachtVentil_Gartenhaus 0
#     2024-05-07 20:11:08   Pos_Meldung_Schachtventil_Pool 1
#     2024-05-07 20:11:08   SchachtVentil_Gartenhaus 0
#     2024-05-07 20:11:08   Schachtventil_Pool 0
#     2024-05-07 20:57:40   Schachtventilstellung Gartenhaus
#     2024-05-07 20:11:08   T_Max_Begrenzung 0
#     2024-05-07 20:11:08   Umschaltung_Solar_Ladung_1 0
#     2024-05-07 20:11:08   Umschaltung_Solar_Ladung_2 0
#     2024-05-07 20:11:08   Umschaltung_Wassermessung_1 0
#     2024-05-07 20:11:08   Umschaltung_Wassermessung_2 0
#     2024-05-07 20:11:08   Ventile_Wasserzuleitung 0
#     2024-05-07 20:11:08   Wasserstand_Sensor 1
#     2024-05-07 20:11:07   state           defined
#   helper:
#     CAN_NODE_ID 2
#   hmccu:
#
setstate COE_Node_cmi_2 Pool Temperatur: 22.4 °C<br>
setstate COE_Node_cmi_2 2024-05-07 21:35:41 Kollektor_Temperatur_Pool_Solar 12.4
setstate COE_Node_cmi_2 2024-05-07 20:57:40 PoolPumpe Error evaluating COE_Node_cmi_2 userReading PoolPumpe: Can't modify non-lvalue subroutine call of &main::ReadingsVal in scalar assignment at (eval 94947200) line 1, near "1  "100""\
syntax error at (eval 94947200) line 1, near "1  "100""\

setstate COE_Node_cmi_2 2024-05-07 21:27:40 Pool_Aussen_Temperatur 13.8
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Pool_Pumpe_100 0
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Pool_Pumpe_40 1
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Pool_Pumpe_70 1
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Pool_Pumpe_90 0
setstate COE_Node_cmi_2 2024-05-07 21:38:41 Pool_Wasser_Temperatur 22.4
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Pos_Meldung_SchachtVentil_Gartenhaus 0
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Pos_Meldung_Schachtventil_Pool 1
setstate COE_Node_cmi_2 2024-05-07 20:11:08 SchachtVentil_Gartenhaus 0
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Schachtventil_Pool 0
setstate COE_Node_cmi_2 2024-05-07 20:57:40 Schachtventilstellung Gartenhaus
setstate COE_Node_cmi_2 2024-05-07 20:11:08 T_Max_Begrenzung 0
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Umschaltung_Solar_Ladung_1 0
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Umschaltung_Solar_Ladung_2 0
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Umschaltung_Wassermessung_1 0
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Umschaltung_Wassermessung_2 0
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Ventile_Wasserzuleitung 0
setstate COE_Node_cmi_2 2024-05-07 20:11:08 Wasserstand_Sensor 1
setstate COE_Node_cmi_2 2024-05-07 20:11:07 state defined


ich würde mir gerne div werte anzeigen lassen wie zb
die Pooltemperatur die ich ja geschaft habe
zustand der wassermessung, Sola Ladung, Wasserzufuhr usw
Unteranderem auch den Zustand der Pumpe bzw mit welcher Leistung diese läuft
Aber nicht 4x Pumpe sondern nur einmal Pumpe mit der jeweiligen lauf Leistung

Ich weis es sind noch kleinere fehler ind den readings der CMI bin noch dabei diese zu beseitgen
aber mir ging es halt um die ansicht

Danke für eure bemühungen
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: Beta-User am 07 Mai 2024, 22:08:59
Bin nach Blick in den Code der Module völlig einig mit betateilchens Vorschlag mit dem userReadings-Vorschlag. Die Werte werden "komisch" angeliefert, was aber in der Übertragungs-Variante begründet ist....
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: betateilchen am 07 Mai 2024, 22:09:49
Zitat von: Beta-User am 07 Mai 2024, 21:51:33kann man m.E. erst in etwa abschätzen, wenn man weiß, wo bzw. wie die erwähnten Basisdaten in den Readings eigentlich herkommen.

Das ist mir inzwischen völlig wurscht. Oben habe ich eine Lösung gepostet, die auf den eingangs gelieferten Informationen beruht und das gewünschte Ergebnis liefert. Mission completed.

Jetzt hole ich mir Popcorn und setze mich als stiller Beobachter aufs Sofa.
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: Aurel_B am 08 Mai 2024, 09:36:07
Sehe ich das anhand von deinem Listing richtig, es kann mehr als 1 Pool_Pumpe_XX Reading auf 1 stehen? Also bei dem Beispiel sind ja sowohl Pool_Pumpe_40 als auch Pool_Pumpe_70 auf 1. Heisst das, die Pumpe läuft mit 70% (und alle tieferen Prozentwerte stehen auch auf 1, also Reading Pool_Pumpe_40 ist zu verstehen mit "Pumpe läuft mindestens auf 40%)?

Falls die Kombination wichtig wäre für deine Auswertung wäre es eventuell sinnvoll, alle Readings miteinander zu verketten und als binäre Zahl zu interpretieren?

Falls nicht bin ich eher ein Fan von "einfachem Code, welchen ich auch in 2 Jahren noch verstehen werde". Das wäre für mich hier ein if-elsif-else, also Pseudocode:

if (Pool_Pumpe_100 == 1)
  set Pumpe=100;
elsif (Pool_Pumpe_70 == 1)
  set Pumpe=70
etc.etc.
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: ChrisA4 am 08 Mai 2024, 11:46:56
Zitat von: Aurel_B am 08 Mai 2024, 09:36:07Sehe ich das anhand von deinem Listing richtig, es kann mehr als 1 Pool_Pumpe_XX Reading auf 1 stehen? Also bei dem Beispiel sind ja sowohl Pool_Pumpe_40 als auch Pool_Pumpe_70 auf 1. Heisst das, die Pumpe läuft mit 70% (und alle tieferen Prozentwerte stehen auch auf 1, also Reading Pool_Pumpe_40 ist zu verstehen mit "Pumpe läuft mindestens auf 40%)?

Falls die Kombination wichtig wäre für deine Auswertung wäre es eventuell sinnvoll, alle Readings miteinander zu verketten und als binäre Zahl zu interpretieren?

Falls nicht bin ich eher ein Fan von "einfachem Code, welchen ich auch in 2 Jahren noch verstehen werde". Das wäre für mich hier ein if-elsif-else, also Pseudocode:

if (Pool_Pumpe_100 == 1)
  set Pumpe=100;
elsif (Pool_Pumpe_70 == 1)
  set Pumpe=70
etc.etc.

So in der richtung meinte ich es

Könntest du mir noch den befehl vervollständigen ich steh grad voll am schlauch und bekomm immer nur fehler im reading oder gar nichts

PS das mit Pumpe_40 1 und Pumpe_70 1 sind noch verdrahtungsfehler die ich erst am abend ändern kann
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: rabehd am 08 Mai 2024, 12:06:45
ZitatPS das mit Pumpe_40 1 und Pumpe_70 1 sind noch verdrahtungsfehler die ich erst am abend ändern kann

Sollte man nicht erst das lösen und dann sich mit Folgeschritten beschäftigen?
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: ChrisA4 am 08 Mai 2024, 13:31:34
Habs mir mit dem Code von Aurel_B (Danke für den Anstoß) schon etwas gebastelt

Pumpe {if (ReadingsVal("$name","Pool_Pumpe_100","") eq "1") {return 100} elsif (ReadingsNum("$name","Pool_Pumpe_90","") eq "1") {return 90} elsif (ReadingsNum("$name","Pool_Pumpe_70","") eq "1") {return 70} elsif (ReadingsNum("$name","Pool_Pumpe_40","") eq "1") {return 40} elsif ([ReadingsNum("$name","Pool_Pumpe_100","")] and [ReadingsNum("$name","Pool_Pumpe_90","")] and [ReadingsNum("$name","Pool_Pumpe_70","")] and [ReadingsNum("$name","Pool_Pumpe_40","")] eq "0") {return "Aus"}}
Pumpen lauf wird mir schon richtig gegeben aber wenn die Pumpe steht also Pumpe_40, _70, _90 und 100 auf null ist bekomme ich mit meinem code nichts bzw keine änderung vom letzten stand
da steh ich am schlauch und würde um hilfe bitten
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: Beta-User am 08 Mai 2024, 14:23:00
Wenn der "0"-Fall gebraucht wird, ginge das ungetestet ggf. so:
Pumpe:Pool_Pumpe_.* {return 100 if ReadingsNum($name,'Pool_Pumpe_100',0); return 90 if ReadingsNum($name,'Pool_Pumpe_90',0); return 70 if ReadingsNum($name,'Pool_Pumpe_70',0); return 40 if ReadingsNum($name,'Pool_Pumpe_40',0); return 0;}
Wird nur getriggert, wenn eines der relevanten Readings aktualisiert wird (eigentlich müßte sogar 'Pool_Pumpe_100' ausreichen, da bulk update; da es aber noch ein analog-Bulk gibt, wird bei diesen Readings nicht nochmal ausgewertet...), und kaskadiert dann einfach die Abfrage. Sollte einigermaßen lesbar sein...
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: ChrisA4 am 08 Mai 2024, 23:52:23
Danke euch Allen auch wenn es anfangs schwierigkeiten gegeben hat
Aber ich bin mit eurer hilfe am arbeiten
werd das end ergebniss posten
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: ChrisA4 am 09 Mai 2024, 19:42:06
So hier mein userReadings

Pumpe:Pool_Pumpe_.* {return "Ein" if ReadingsNum($name,'Pool_Pumpe_Ein',0); return "100 %" if ReadingsNum($name,'Pool_Pumpe_100',0); return "80 %" if ReadingsNum($name,'Pool_Pumpe_80',0); return "60 %" if ReadingsNum($name,'Pool_Pumpe_60',0); return "Aus";}, Schacht_Ventil_Stellung {if (ReadingsVal("$name","Pos_Meldung_SchachtVentil_Gartenhaus","") eq "1") {return "Gartenhaus"} elsif (ReadingsVal("$name","Pos_Meldung_Schachtventil_Pool","") eq "1") {return "Pool"} els {return "Drehung"}},Messung_PH_Chlor {if (ReadingsVal("$name","Umschaltung_Wassermessung_1","") eq "1" && ReadingsVal("$name","Umschaltung_Wassermessung_2","") eq "1") {return "Aktiv"} elsif (ReadingsVal("$name","Umschaltung_Solar_Ladung_1","") eq "0" && ReadingsVal("$name","Umschaltung_Solar_Ladung_2","") eq "0") {return "Aus"}},Solar_Ladung {if (ReadingsVal("$name","Umschaltung_Solar_Ladung_1","") eq "1" && ReadingsVal("$name","Umschaltung_Solar_Ladung_2","") eq "1") {return "Aktiv"} elsif (ReadingsVal("$name","Umschaltung_Solar_Ladung_1","") eq "0" && ReadingsVal("$name","Umschaltung_Solar_Ladung_2","") eq "0") {return "Aus"}},Wasser_Zulauf {if (ReadingsVal("$name","Ventile_Wasserzuleitung","") eq "1") {return "Aktiv"} els {return "Aus"}}
Jetzt hab ich alle Werte die ich wollte
Danke für eure hilfe und eure Anstöße um mir die codes zu basteln
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: betateilchen am 09 Mai 2024, 20:08:05
Zitat von: ChrisA4 am 09 Mai 2024, 19:42:06Pumpe:Pool_Pumpe_.* {
  return "Ein" if ReadingsNum($name,'Pool_Pumpe_Ein',0);
  return "100 %" if ReadingsNum($name,'Pool_Pumpe_100',0);
  return "80 %" if ReadingsNum($name,'Pool_Pumpe_80',0);
  return "60 %" if ReadingsNum($name,'Pool_Pumpe_60',0);
  return "Aus";},
Schacht_Ventil_Stellung {
  if (ReadingsVal("$name","Pos_Meldung_SchachtVentil_Gartenhaus","") eq "1") {return "Gartenhaus"}
  elsif (ReadingsVal("$name","Pos_Meldung_Schachtventil_Pool","") eq "1") {return "Pool"}
  els {return "Drehung"}},
Messung_PH_Chlor {
  if (ReadingsVal("$name","Umschaltung_Wassermessung_1","") eq "1"
     && ReadingsVal("$name","Umschaltung_Wassermessung_2","") eq "1") {return "Aktiv"}
  elsif (ReadingsVal("$name","Umschaltung_Solar_Ladung_1","") eq "0"
     && ReadingsVal("$name","Umschaltung_Solar_Ladung_2","") eq "0") {return "Aus"}},
Solar_Ladung {
  if (ReadingsVal("$name","Umschaltung_Solar_Ladung_1","") eq "1"
     && ReadingsVal("$name","Umschaltung_Solar_Ladung_2","") eq "1") {return "Aktiv"}
  elsif (ReadingsVal("$name","Umschaltung_Solar_Ladung_1","") eq "0"
     && ReadingsVal("$name","Umschaltung_Solar_Ladung_2","") eq "0") {return "Aus"}},
Wasser_Zulauf {
  if (ReadingsVal("$name","Ventile_Wasserzuleitung","") eq "1") {return "Aktiv"} els {return "Aus"}
}

Und ich behaupte, das kann nicht funktionieren, weil da mehrere Syntaxfehler enthalten sind.
Der Code ist einfach nur gruslig, von der Performance mal ganz abgesehen.

Außerdem fehlen bei 4 von 5 userReadings vernünftige Trigger.
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: ChrisA4 am 10 Mai 2024, 06:20:21
define COE_Node_cmi_2 COE_Node 2
attr COE_Node_cmi_2 alias Pool Steuerung
attr COE_Node_cmi_2 group Pool
attr COE_Node_cmi_2 icon scene_pool
attr COE_Node_cmi_2 readingsConfigAnalog 1=Kollektor_Temperatur_Pool_Solar 2=Pool_Wasser_Temperatur 3=Pool_Aussen_Temperatur
attr COE_Node_cmi_2 readingsConfigDigital 1=Pool_Pumpe_Ein 2=Pool_Pumpe_100 3=Pool_Pumpe_80 4=Pool_Pumpe_60 5=SchachtVentil_Gartenhaus 6=Schachtventil_Pool 7=Pos_Meldung_SchachtVentil_Gartenhaus 8=Pos_Meldung_Schachtventil_Pool 9=Wasserstand_Sensor 10=Ventile_Wasserzuleitung 11=Umschaltung_Wassermessung_1 12=Umschaltung_Wassermessung_2 13=Umschaltung_Solar_Ladung_1 14=Umschaltung_Solar_Ladung_2 15=T_Max_Begrenzung
attr COE_Node_cmi_2 room Pool
attr COE_Node_cmi_2 stateFormat {"Pool Temperatur: ".ReadingsVal($name,"Pool_Wasser_Temperatur",0)." °C<br>Solar Temperatur: " .ReadingsVal($name,"Kollektor_Temperatur_Pool_Solar",0)." °C<br>Aussen Temperatur: ".ReadingsVal($name,"Pool_Aussen_Temperatur",0)." °C<br>Pumpe: ".ReadingsVal($name,"Pumpe",0)." <br>Solar Ladung: ".ReadingsVal($name,"Solar_Ladung",0)." <br>PH und Chlor Messung: ".ReadingsVal($name,"Messung_PH_Chlor",0)." <br>Schacht Ventil Stellung: ".ReadingsVal($name,"Schacht_Ventil_Stellung",0)." <br>Wasser Zulauf: ".ReadingsVal($name,"Wasser_Zulauf",0)." <br>"}
attr COE_Node_cmi_2 userReadings Pumpe:Pool_Pumpe_.* {return "Ein" if ReadingsNum($name,'Pool_Pumpe_Ein',0);; return "100 %" if ReadingsNum($name,'Pool_Pumpe_100',0);; return "80 %" if ReadingsNum($name,'Pool_Pumpe_80',0);; return "60 %" if ReadingsNum($name,'Pool_Pumpe_60',0);; return "Aus";;}, Schacht_Ventil_Stellung {if (ReadingsVal("$name","Pos_Meldung_SchachtVentil_Gartenhaus","") eq "1") {return "Gartenhaus"} elsif (ReadingsVal("$name","Pos_Meldung_Schachtventil_Pool","") eq "1") {return "Pool"} els {return "Drehung"}},Messung_PH_Chlor {if (ReadingsVal("$name","Umschaltung_Wassermessung_1","") eq "1" && ReadingsVal("$name","Umschaltung_Wassermessung_2","") eq "1") {return "Aktiv"} elsif (ReadingsVal("$name","Umschaltung_Solar_Ladung_1","") eq "0" && ReadingsVal("$name","Umschaltung_Solar_Ladung_2","") eq "0") {return "Aus"}},Solar_Ladung {if (ReadingsVal("$name","Umschaltung_Solar_Ladung_1","") eq "1" && ReadingsVal("$name","Umschaltung_Solar_Ladung_2","") eq "1") {return "Aktiv"} elsif (ReadingsVal("$name","Umschaltung_Solar_Ladung_1","") eq "0" && ReadingsVal("$name","Umschaltung_Solar_Ladung_2","") eq "0") {return "Aus"}},Wasser_Zulauf {if (ReadingsVal("$name","Ventile_Wasserzuleitung","") eq "1") {return "Aktiv"} els {return "Aus"}}
#   CFGFN     
#   DEF        2
#   FUUID      663c63f8-f33f-c95d-d985-ba31385ffa172ca8
#   IODev      cmi
#   LASTInputDev cmi
#   MSGCNT     2797
#   NAME       COE_Node_cmi_2
#   NR         714
#   STATE      Pool Temperatur: 22.8 °C<br>Solar Temperatur: 5.6 °C<br>Aussen Temperatur: 8.5 °C<br>Pumpe: 100 % <br>Solar Ladung: Aus <br>PH und Chlor Messung: Aktiv <br>Schacht Ventil Stellung: Gartenhaus <br>Wasser Zulauf: Aus <br>
#   TYPE       COE_Node
#   cmi_MSGCNT 2797
#   cmi_TIME   2024-05-10 06:09:50
#   eventCount 2796
#   READINGS:
#     2024-05-10 06:06:36   Kollektor_Temperatur_Pool_Solar 5.6
#     2024-05-10 06:09:50   Messung_PH_Chlor Aktiv
#     2024-05-10 06:09:36   Pool_Aussen_Temperatur 8.5
#     2024-05-10 03:31:30   Pool_Pumpe_100  1
#     2024-05-09 17:01:44   Pool_Pumpe_60   0
#     2024-05-09 11:05:45   Pool_Pumpe_80   0
#     2024-05-09 07:51:14   Pool_Pumpe_Ein  0
#     2024-05-10 06:09:36   Pool_Wasser_Temperatur 22.8
#     2024-05-10 03:31:50   Pos_Meldung_SchachtVentil_Gartenhaus 1
#     2024-05-10 03:31:40   Pos_Meldung_Schachtventil_Pool 0
#     2024-05-10 03:31:30   Pumpe           100 %
#     2024-05-10 03:31:40   SchachtVentil_Gartenhaus 1
#     2024-05-10 06:09:50   Schacht_Ventil_Stellung Gartenhaus
#     2024-05-10 03:31:40   Schachtventil_Pool 0
#     2024-05-10 06:09:50   Solar_Ladung    Aus
#     2024-05-09 07:51:14   T_Max_Begrenzung 0
#     2024-05-09 07:51:14   Umschaltung_Solar_Ladung_1 0
#     2024-05-09 07:51:14   Umschaltung_Solar_Ladung_2 0
#     2024-05-09 08:18:40   Umschaltung_Wassermessung_1 1
#     2024-05-09 07:51:14   Umschaltung_Wassermessung_2 1
#     2024-05-09 07:51:14   Ventile_Wasserzuleitung 0
#     2024-05-10 06:09:50   Wasser_Zulauf   Aus
#     2024-05-10 03:31:40   Wasserstand_Sensor 0
#     2024-05-09 07:49:44   state           defined
#   helper:
#     CAN_NODE_ID 2
#   hmccu:
#
setstate COE_Node_cmi_2 Pool Temperatur: 22.8 °C<br>Solar Temperatur: 5.6 °C<br>Aussen Temperatur: 8.5 °C<br>Pumpe: 100 % <br>Solar Ladung: Aus <br>PH und Chlor Messung: Aktiv <br>Schacht Ventil Stellung: Gartenhaus <br>Wasser Zulauf: Aus <br>
setstate COE_Node_cmi_2 2024-05-10 06:06:36 Kollektor_Temperatur_Pool_Solar 5.6
setstate COE_Node_cmi_2 2024-05-10 06:09:50 Messung_PH_Chlor Aktiv
setstate COE_Node_cmi_2 2024-05-10 06:09:36 Pool_Aussen_Temperatur 8.5
setstate COE_Node_cmi_2 2024-05-10 03:31:30 Pool_Pumpe_100 1
setstate COE_Node_cmi_2 2024-05-09 17:01:44 Pool_Pumpe_60 0
setstate COE_Node_cmi_2 2024-05-09 11:05:45 Pool_Pumpe_80 0
setstate COE_Node_cmi_2 2024-05-09 07:51:14 Pool_Pumpe_Ein 0
setstate COE_Node_cmi_2 2024-05-10 06:09:36 Pool_Wasser_Temperatur 22.8
setstate COE_Node_cmi_2 2024-05-10 03:31:50 Pos_Meldung_SchachtVentil_Gartenhaus 1
setstate COE_Node_cmi_2 2024-05-10 03:31:40 Pos_Meldung_Schachtventil_Pool 0
setstate COE_Node_cmi_2 2024-05-10 03:31:30 Pumpe 100 %
setstate COE_Node_cmi_2 2024-05-10 03:31:40 SchachtVentil_Gartenhaus 1
setstate COE_Node_cmi_2 2024-05-10 06:09:50 Schacht_Ventil_Stellung Gartenhaus
setstate COE_Node_cmi_2 2024-05-10 03:31:40 Schachtventil_Pool 0
setstate COE_Node_cmi_2 2024-05-10 06:09:50 Solar_Ladung Aus
setstate COE_Node_cmi_2 2024-05-09 07:51:14 T_Max_Begrenzung 0
setstate COE_Node_cmi_2 2024-05-09 07:51:14 Umschaltung_Solar_Ladung_1 0
setstate COE_Node_cmi_2 2024-05-09 07:51:14 Umschaltung_Solar_Ladung_2 0
setstate COE_Node_cmi_2 2024-05-09 08:18:40 Umschaltung_Wassermessung_1 1
setstate COE_Node_cmi_2 2024-05-09 07:51:14 Umschaltung_Wassermessung_2 1
setstate COE_Node_cmi_2 2024-05-09 07:51:14 Ventile_Wasserzuleitung 0
setstate COE_Node_cmi_2 2024-05-10 06:09:50 Wasser_Zulauf Aus
setstate COE_Node_cmi_2 2024-05-10 03:31:40 Wasserstand_Sensor 0
setstate COE_Node_cmi_2 2024-05-09 07:49:44 state defined


Ich behaupte daß es funktioniert

Ich bin leider kein profi in den sprachen von perl usw
und bin auch deswegen ins forum gegangen um hilfe zu bekommen "Anfängerfragen"
aber immer nur kritik zu ernten hab ich nicht erwartet

@betateilchen wenns besser geht dann zeigs doch, aber bitte nicht immer so negative kommentare

Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: Nobbynews am 10 Mai 2024, 09:01:41
Zitat von: ChrisA4 am 10 Mai 2024, 06:20:21Ich behaupte daß es funktioniert
Glaube ich nicht, jedenfalls nicht vollständig.

Mach mal ein
attr global perlSyntaxCheck 1und rufe dann die def noch einmal auf und drück auf modify zum Abspeichern.
Dann kannst Du Deine Definition nicht abspeichern, da Fehler ausgeworfen werden.

Aus der commandref:
ZitatperlSyntaxCheck
by setting the global attribute perlSyntaxCheck, a syntax check will be executed upon definition or modification, if the command is perl and FHEM is already started.

z.B. 'els' ist falsch und muss 'else' heißen.
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: betateilchen am 10 Mai 2024, 09:04:55
Zitat von: ChrisA4 am 10 Mai 2024, 06:20:21aber immer nur kritik zu ernten hab ich nicht erwartet

@betateilchen wenns besser geht dann zeigs doch, aber bitte nicht immer so negative kommentare





Wo ich noch Zweifel habe:


...
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: Nobbynews am 10 Mai 2024, 09:09:07
Zitat von: betateilchen am 10 Mai 2024, 09:04:55es ist besser, mit ReadingsNum() zu arbeiten anstatt mit ReadingsVal() wenn man Werte nur auf 0 oder 1 prüfen möchte.
Dann aber konsequent den Vergleich von 'eq' (Zeichenkette) auf '==' (numerisch) mit ändern.
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: Prof. Dr. Peter Henning am 10 Mai 2024, 09:16:41
Was heißt hier eigentlich "immer nur Kritik"? Das ist in Anbetracht der erhaltenen Hilfe ziemlich daneben.

Betateilchen hat vollkommen Recht: Der unten gepostete Perl-Code ist fehlerhaft und wird so nicht laufen, die Behauptung "dass es funktioniere", ist einfach absurd. Dass er darüber hinaus wirklich gruselig schlecht ist, ist Nebensache - jeder hat das Recht auf schlechten Code.

LG

pah
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: betateilchen am 10 Mai 2024, 09:22:47
Zitat von: Nobbynews am 10 Mai 2024, 09:09:07Dann aber konsequent den Vergleich von 'eq' (Zeichenkette) auf '==' (numerisch) mit ändern.

Oder komplett weglassen.
Siehe Beispiel bei "Pumpe".

Wenn ein Wert ohnehin nur 1 oder 0 liefert, dann ergibt

if (ReadingsNum(<device>,<reading>,0))
das gleiche Ergebnis wie

if (ReadingsNum(<device>,<reading>,0) == 1)
und

if (!ReadingsNum(<device>,<reading>,0))
das gleiche Ergebnis wie

if (ReadingsNum(<device>,<reading>,0) == 0)
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: ChrisA4 am 11 Mai 2024, 00:23:45
Zitates heißt "else" und nicht "els"
Hatte mir aber bei diese Zeile
ZitatWasser_Zulauf {if (ReadingsVal("$name","Ventile_Wasserzuleitung","") eq "1") {return "Aktiv"} els {return "Aus"}}
komischer weise ein "Aus" gegeben
Zitates ist besser, mit ReadingsNum() zu arbeiten anstatt mit ReadingsVal() wenn man Werte nur auf 0 oder 1 prüfen möchte.
hab deinen rat befolgt und verbessert
ZitatVariablennamen wie $name muss man nicht in Anführungszeichen setzen
Wußte ich nicht habs bis jetzt immer so nachkopiert
ZitatMan sollte für jedes userReading einen Trigger verwenden (nur bei "Pumpe" gibt es einen)
Hoffe habs im folgenden besser gemacht
ZitatIst es richtig, bei "Messung_PH_Chlor" auf "Umschaltung_Solar_Ladung_1" zu prüfen? Erscheint mir einigermaßen unlogisch.
Stimmt hab ich glatt übersehen
ZitatWas passiert in den Fällen, die in Deinen Abfragen nicht berücksichtigt sind? Zum Beispiel, wenn "Umschaltung_Solar_Ladung_1"==1 und "Umschaltung_Solar_Ladung_2" ==0?
Hab ich jetzt berücksichtigt
Zitat"Kritik" muss nicht per se etwas negatives sein.
    meine letzte Antwort war nicht als "negativer Kommentar" gedacht, sondern als ernstgemeinter Hinweis, das Ganze nochmal zu prüfen und ggf. zu verbessern.
Hat mich angestoßen um es nochmal zu überarbeiten
hier das ergebniss

Pumpe:Pool_Pumpe_.* {return 'Ein' if ReadingsNum($name,'Pool_Pumpe_Ein',0); return '100 %' if ReadingsNum($name,'Pool_Pumpe_100',0); return '80 %' if ReadingsNum($name,'Pool_Pumpe_80',0); return '60 %' if ReadingsNum($name,'Pool_Pumpe_60',0); return 'Aus';}, Schacht_Ventil_Stellung:Pos_Meldung_SchachtVentil_.* {return 'Gartenhaus' if ReadingsNum($name,'Pos_Meldung_SchachtVentil_Gartenhaus',0); return 'Pool' if ReadingsNum($name,'Pos_Meldung_SchachtVentil_Pool',0); return 'Drehung';}, Ventil_Lauf:Umschaltung_.* {return 'PH und Chlor Messung' if (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 0); return 'Solar Ladung' if (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 1); return 'Fehler' if (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 1) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 0) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 0) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 0) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 0) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 1) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 1) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 1) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 1); return 'Stop' if (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 0);}, Wasser_Zulauf:Ventile_Wasserzuleitung.* {return 'Aktive' if ReadingsNum($name,'Ventile_Wasserzuleitung',0); return 'Aus';}, Umschaltung {return 'Solar Ladung' if ReadingsNum($name,'Solar_Ladung',0); return 'PH und Chlor Messung' if ReadingsNum($name,'Wasser_Messung',0); return 'Fehler';}
Könntest du mal drüber schauen ob noch fehler drin sind oder ob man was besser machen könnte

Bedanke mich schon  mal im vorhinein

Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: Beta-User am 11 Mai 2024, 11:10:07
Warum formatierte Zahlenwerte? Warum (deutschen!?!) Text? Hindert nur bei der Visualisierung und ggf. Integration in Sprachsteuerung etc....
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: ChrisA4 am 11 Mai 2024, 11:45:10
wie könnte man sonst rausfinden um fehler in der schaltung  raus zu filtern als mit 1,1,1,0 oder 1,0,1,1 oder 1,1,1,1 usw
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: betateilchen am 11 Mai 2024, 11:53:39
Formuliere doch bitte mal die eigentliche Aufgabenstellung.
Und zwar vollständig und möglichst einfach.

Offenbar versteht niemand, was Du eigentlich erreichen möchtest.
Und offenbar weißt Du selbst nicht genau, was Du eigentlich tun willst.
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: ChrisA4 am 11 Mai 2024, 12:44:20
Zitat von: Beta-User am 11 Mai 2024, 11:10:07Warum formatierte Zahlenwerte? Warum (deutschen!?!) Text? Hindert nur bei der Visualisierung und ggf. Integration in Sprachsteuerung etc....

Damit meintest du ja diese zeile
Zitatreturn 'Fehler' if (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 1) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 0) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 0) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 0) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 0) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 1) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 1) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 1) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 1);
da ich sie mit "== 0" und "== 1" geschrieben habe
ich wollte einfach nur wissen wie und ob man es anders schreiben könnte
hierbei geht es darum wie die relais rückmeldungen ankommen damit es mir einen schaltungsfehler aufzeigt

der rest passt so für mich , denke ich



Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: Aurel_B am 11 Mai 2024, 13:45:52
Zitat von: ChrisA4 am 11 Mai 2024, 12:44:20
Zitatreturn 'Fehler' if (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 0) &&
etc. etc. etc.


Boah, das ist heftig, ich denke, das geht wesentlich eleganter:

Edit: Kann es sein, dass für dich alles ein Fehler ist sobald irgendeines deiner Reading == 1 ist?
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: Prof. Dr. Peter Henning am 11 Mai 2024, 13:55:49
Zitat von: Aurel_B am 11 Mai 2024, 13:45:52viel elegantere Lösung
Da gibt es eigentlich nur eine: Die vier getesteten Werte (jeweils 1 oder 0) mit 1,2,4,8 multiplizieren und addieren => Jeder Zustand entspricht einer Zahl von 0..15.

Allerdings sollte der TE soviel über die FHEM-Basics und Perl bitte selbst lernen, statt immer andere anzuheuern.

LG

pah
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: betateilchen am 11 Mai 2024, 13:56:16
Zitat von: Aurel_B am 11 Mai 2024, 13:45:52Wenn du uns sagst, was du genau mit deiner Logik erreichen willst,

Das versuche ich seit mehreren Tagen herauszufinden.
Aber meine diesbezüglichen Fragen werden komplett ignoriert.

Stattdessen bekommt man "negative Kommentare" und "immer nur Kritik" unterstellt - das macht einfach alles keinen Spaß, wenn man eigentlich nur helfen möchte.
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: ChrisA4 am 11 Mai 2024, 14:19:09
Ich weiß einfach nicht mehr wie ich es erklären kann
möcht einfach nur den momentanen zustand der poolsteuerung abfragen und mit den daten die ich von der uvr1611 bekomme zusammenfassen und es etwas übersichtlicher zu sehen

hab ausdruck der seite angehängt wie der derzeitige und, denkemal, funktionierender aufbau ist

warscheinlich bin ich zu doof um es besser zu erklären[attach
id=178210]pool.pdf[/attach]
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: Beta-User am 11 Mai 2024, 14:27:32
Zitat von: ChrisA4 am 11 Mai 2024, 12:44:20
Zitat von: Beta-User am 11 Mai 2024, 11:10:07Warum formatierte Zahlenwerte? Warum (deutschen!?!) Text? Hindert nur bei der Visualisierung und ggf. Integration in Sprachsteuerung etc....


Damit meintest du ja diese zeile
Zitatreturn 'Fehler' if (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 1) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 0) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 0) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 0) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 0) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 1) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 0) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 1) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 0) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 1) || (ReadingsNum($name,'Umschaltung_Wassermessung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Wassermessung_2',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0) == 1) && (ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0) == 1);
da ich sie mit "== 0" und "== 1" geschrieben habe
ich wollte einfach nur wissen wie und ob man es anders schreiben könnte
hierbei geht es darum wie die relais rückmeldungen ankommen damit es mir einen schaltungsfehler aufzeigt

der rest passt so für mich , denke ich




Nein. Sowas wie "70 %" und "Aus"....
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: Prof. Dr. Peter Henning am 11 Mai 2024, 15:32:47
Ich kann das Gejammer nicht mehr ertragen.  Mit der Auflage, wenigstens mal ein paar Grundlagen zu lernen:
my $sta=ReadingsNum($name,'Umschaltung_Wassermessung_1',0)+2*ReadingsNum($name,'Umschaltung_Wassermessung_2',0)+ 
4*ReadingsNum($name,'Umschaltung_Solar_Ladung_1',0)+8*ReadingsNum($name,'Umschaltung_Solar_Ladung_2',0);
return ( $sta !~ /^(3|5|6|9|(10)|(12))$/)?"Fehler":"OK";

LG

pah
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: Aurel_B am 12 Mai 2024, 12:17:51
Zitat von: ChrisA4 am 11 Mai 2024, 14:19:09Ich weiß einfach nicht mehr wie ich es erklären kann
möcht einfach nur den momentanen zustand der poolsteuerung abfragen und mit den daten die ich von der uvr1611 bekomme zusammenfassen und es etwas übersichtlicher zu sehen

Hi Chris, ich denke, das wird so nicht wirklich befriedigend für uns alle. Wir wissen nicht, was "zusammenfassen" und "übersichtlicher" in deinem Fall bedeutet. Wie von anderen vorgeschlagen: ich würde mal ein Tutorial o.Ä. durchgehen mit den Grundlagen von Perl. Und dann versuchen, klare und begrenzte Fragestellungen zu posten. z.B.: "ich habe diese 4 Werte, eine gewisse Kombination (welche?) aus diesen 4 Werten soll als Fehler interpretiert werden, die restlichen Kombinationen (again: welche?) als korrekt. Das ist mein Code den ich mir erarbeitet habe, wie kann ich den noch verbessern?".

Weil wenn wir für dich irgendwelchen Code zusammenbauen sollen ist das weder für uns noch für dich wirklich hilfreich weil a) wir wissen nicht, was du genau möchtest und b) für dich bleibt das ganze weiterhin eine Blackbox...
Titel: Aw: reading aus mehreren readings als ist zustand
Beitrag von: ChrisA4 am 12 Mai 2024, 19:47:41
ZitatHi Chris, ich denke, das wird so nicht wirklich befriedigend für uns alle. Wir wissen nicht, was "zusammenfassen" und "übersichtlicher" in deinem Fall bedeutet. Wie von anderen vorgeschlagen: ich würde mal ein Tutorial o.Ä. durchgehen mit den Grundlagen von Perl. Und dann versuchen, klare und begrenzte Fragestellungen zu posten. z.B.: "ich habe diese 4 Werte, eine gewisse Kombination (welche?) aus diesen 4 Werten soll als Fehler interpretiert werden, die restlichen Kombinationen (again: welche?) als korrekt. Das ist mein Code den ich mir erarbeitet habe, wie kann ich den noch verbessern?".

Werd ich mir zu Herzen nehmen
Danke trotzdem an alle