FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: derFelix am 31 März 2022, 00:57:49

Titel: notify mit 2 Bedingungen aus Readings
Beitrag von: derFelix am 31 März 2022, 00:57:49
Hallo Gemeinde,

ich komme mit einer Schaltung nicht weiter, bei der ein notify Readings von 2 Sensoren auslesen soll und bei entsprechenden Werten schalten soll.
Folgender Code funktioniert bei mir nicht:

define PV_off notify (Wetterstation:solarradiation.*) {if  ((Wetterstation:solarradiation) = 0 &&  (Ess10:/essinfo/home/direction/is_battery_discharging_) = 0) {fhem('set Ess10 System off')}}

Fehlermeldung:
syntax error at (eval 34268) line 1, near "Wetterstation:"
Unknown regexp modifier "/h" at (eval 34268) line 1, at end of line
Unknown regexp modifier "/e" at (eval 34268) line 1, at end of line
Unknown regexp modifier "/_" at (eval 34268) line 1, at end of line
Unknown regexp modifier "/b" at (eval 34268) line 1, at end of line
Unknown regexp modifier "/t" at (eval 34268) line 1, at end of line
Unknown regexp modifier "/t" at (eval 34268) line 1, at end of line
Unknown regexp modifier "/e" at (eval 34268) line 1, at end of line
Unknown regexp modifier "/r" at (eval 34268) line 1, at end of line
Unknown regexp modifier "/y" at (eval 34268) line 1, at end of line
(eval 34268) has too many errors.


Ich werde daraus nicht schlau. Kann mir jemand einen Tip geben?
Gruß, Felix
Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: Beta-User am 31 März 2022, 09:59:06
Puh, da weiß man gar nicht so recht, wo anfangen...

Also:
- notify bitte als Einsteiger möglichst mit dem Event-Monitor (https://wiki.fhem.de/wiki/Event_monitor) erstellen.
- "=" ist eine Zuweisung, ein Vergleich ist als "==" oder "eq" zu schreiben;
- hier scheint die "Eingangsbedingung" eigentlich schon Teil des Events zu sein. Sowas hier sollte eigentlich dann schon nur zum richtigen Zeitpunkt getriggert werden:
define PV_off notify Wetterstation:solarradiation:.0 {} Bitte das mal so eingeben und dann warten, bis ein entsprechendes Event kommt (oder das selbst triggern, siehe "trigger"-Befehl!)

Ansonsten wäre noch interessant, wie oft da Events kommen, du willst ja nicht jedes Mal auschalten, wenn (z.B. alle 10 Minuten) des "0-Event" gemeldet wird.

Weiter bitte ein list (siehe angepinnte Beiträge) vom Device "Ess10".
Der hier gezeigte String sollte eigentlich auf gar keinen Fall ein Reading-Name sein, wenn doch, sollte man das an den Modulautor adressieren...

Bitte dann in der commandref mal den Abschnitt "Perl-Specials" lesen, da steht drin, wie man in Perl auf Reading-Werte zugreift. Die commandref zu "notify" wäre auch empfehlenswert, dto. für den gleichnamigen Wiki-Artikel.
Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: derFelix am 31 März 2022, 12:01:23
Vielen Dank für Deine Antwort.
- "==" bzw "eq" hab ich verstanden
- angegebene notify-Definition eingegeben, jedoch kommt bei Eventmonitor keine Reaktion beim triggern
- 0-Event wird nur einmalig beim Eintreten getriggert
Readings vom Ess10 im Anhang.


Jetzt arbeite ich Deine Lesevorschläge durch. Danke.
Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: Beta-User am 31 März 2022, 12:27:49
OK, dann mal viel Spaß.

Ein screenshot ist aber definitiv kein "list", bitte künftig vermeiden und die Info liefern, was das für ein Modul ist. "help Ess10" liefert mir "Module ess10 not found".
Diese Readings sind jedenfalls nicht unbedingt so benannt, wie das in FHEM "geschickt" wäre...
Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: derFelix am 31 März 2022, 12:58:58
Das folgende Modul wurde benutzt:
https://forum.fhem.de/index.php?topic=110884.0

Bei help Ess10 bekomme ich:

LG_ESS

Getting the password

To determine the password of the system, this module must be executed using Strawberry Perl on a laptop with WLAN.

Install FHEM on laptop. https://wiki.fhem.de/wiki/FHEM_Installation_Windows
Connect the computer to the LG_ESS system's WLAN. (WiFi password is on the nameplate)
Enter the following command in the FHEM command line to determine the password: define myESS GettingPassword
Write down the password

Define

define <name> LG_ESS <ip-address> <password>

The module can reads current values and send commands to a LG ESS inverter.

Parameters:
<ip-address> - the ip address of the inverter
<password> - the login-password for the inverter
Example:

define myEss LG_ESS 192.168.2.4 password

Set-Commands

set <name> GetState
All values of the inverter are immediately polled.

set <name> BatteryChargingMode <value>
"battery_care" switch the system to Battery Care Mode.
"fast_charge" switch the system to Fast Charge Mode.
"weather_forecast" switch the system to Weather Forcast Mode.

set <name> BatteryWinterMode <value>
"on" switch the Winter Mode on.
"off"switch the Winter Mode off.

set <name> System <value>
"on" switch the system on.
"off" switch the system off.

Attributes
readingFnAttributes
PollingIntervall - A valid polling interval for automatic polling. The value must be >=10s. The default value is 30s.
DoNotPoll - with 1 the automatic polling is switched off


Wie ich sonst eine List bei diesem Modul erstellen soll, entzieht sich meiner Kenntnis. Per Notify habe ich jedoch bereits nach entsprechenden Readings schalten können, jedoch immer nur nach einem einzigen Reading, nicht nach 2 verschiedenen Readings.
(Ess10:/essinfo/home/direction/is_battery_charging_.*) {if ($EVTPART1 > 0) {fhem('set Weihnachtsbeleuchtung on')} else {fhem('set Weihnachtsbeleuchtung off')}}

Nach dem Schnipsel kann ich mir das notify leider nicht auf 2 Readings erweitern.
Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: Beta-User am 31 März 2022, 13:17:38
Na ja, da hätte jemand auch was anderes z.B. in Zeile https://github.com/Morluktom/LG_ESS/blob/master/FHEM/79_LG_ESS.pm#L562 reinschreiben können...

list TYPE=LG_ESS
oder
list Ess10
wären die Befehle gewesen. (Hat sich erst mal erledigt).

Bitte in der commandref insbesondere "ReadingsVal()" und "ReadingsNum()" suchen, dann wird das ggf. klarer.

Und diese komischen Klammern um den Event kannst du in deinen beiden Beispielen schlicht weglassen, die sind tendenziell kontraproduktiv (Stichwort: NOTIFYDEV).
Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: derFelix am 31 März 2022, 13:41:55
Was zu ReadingsVal() und ReadingsNum() in der Commandref steht hilft mir gerade in meinem Problem nicht weiter.
Im Wiki Steht als Beispiel für die Auswertung zweier Readings folgendes:

Status eines Kippfensters mit 2 Fensterkontakten abbilden
Vorbereitung
Es ist je ein Fensterkontakt der open oder closed meldet, oben und unten am Fenster angebracht. Die Namen der beiden FHEM-Devices sind fensterKontaktOben und fensterKontaktUnten.

notify Syntax
FHEM:

define statusFenster notify fensterKontakt(Oben|Unten):(open|closed) {\
if ( ReadingsVal('fensterKontaktOben', 'state', 'undef') eq 'open' && ReadingsVal('fensterKontaktUnten', 'state', 'undef') eq 'open')\
       { fhem 'set Terrassentuer open' }\
if ( ReadingsVal('fensterKontaktOben', 'state', 'undef') eq 'closed' && ReadingsVal('fensterKontaktUnten', 'state', 'undef') eq 'closed')\
       { fhem 'set Terrassentuer closed' }\
if ( ReadingsVal('fensterKontaktOben', 'state', 'undef') eq 'open' && ReadingsVal('fensterKontaktUnten', 'state', 'undef') eq 'closed')\
       { fhem 'set Terrassentuer tilted' }\
if ( ReadingsVal('fensterKontaktOben', 'state', 'undef') eq 'closed' && ReadingsVal('fensterKontaktUnten', 'state', 'undef') eq 'open')\
       { fhem 'set Terrassentuer undef' }\
}

wenn ich das umverwurste auf meine Situation
Wetterstation:solarradiation.* {if (ReadingsVal('Wetterstation', 'solarradiation', 'undef') eq 0) {fhem('set Buero_Decke off')}}
passiert nix.

Bei
Wetterstation:solarradiation.* {if ($EVTPART1 eq 0) {fhem('set Buero_Decke off')}}
funktioniert das Test-Ausschalten.

Nur wie kann ich über dieses EVTPART Readings von mehreren Devices auswerten?
Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: Beta-User am 31 März 2022, 13:59:05
a) Warum nimmst du die "0" wieder nach hinten und läßt das nicht im trigger?

b) In den Beispielen sind Quotes - "vermutlich" nicht völlig grundlos, v.a., wenn es mit "eq" kombiniert ist...

c) $EVTPARTx hat wenig mit Reading-Werten zu tun, das kommt aus dem Event.

d) Verwende "Quotation marks", wenn du zitierst (neben dem #-Button)

e) (Notiz an mich selbst: Das Wiki muss ich mir mal noch ansehen, das ist ja gruselig, was ich (?) dort vor Urzeiten mal verbrochen habe).
Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: derFelix am 31 März 2022, 14:06:15
Du hast recht, mit
Wetterstation:solarradiation.0 {if ($EVTPART1 eq 0) {fhem('set Buero_Decke off')}}
funktioniert es auch wunderbar.
was zum Teufel sind denn jetzt schon wieder Quotes?

Ich denk mal, das wird bei mir nix mehr. Ich werde es lassen. Bin doch eher der Programmausführer denn der Programmierer.
Trotzdem danke für Deinen Einsatz.
Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: Otto123 am 31 März 2022, 14:22:15
Zitat von: derFelix am 31 März 2022, 13:41:55
wenn ich das umverwurste auf meine Situation
Wetterstation:solarradiation.* {if (ReadingsVal('Wetterstation', 'solarradiation', 'undef') eq 0) {fhem('set Buero_Decke off')}}
passiert nix.

Bei
Wetterstation:solarradiation.* {if ($EVTPART1 eq 0) {fhem('set Buero_Decke off')}}
funktioniert das Test-Ausschalten.

Nur wie kann ich über dieses EVTPART Readings von mehreren Devices auswerten?
Ich verstehe nicht warum beide Codes unterschiedliche Ergebnisse liefern sollen? Für mich sieht das gleich aus (unabhängig davon, dass man es einfacher/kürzer machen kann)

Aber die letzte Frage beantwortet sich doch im Beispiel? Wenn einmal getriggert ist, kann man doch " 27 Devices und deren Werte " nach diesem Schema abfragen und kombinieren?
if ( ReadingsVal('fensterKontaktOben', 'state', 'undef') eq 'closed' && ReadingsVal('fensterKontaktUnten', 'state', 'undef') eq 'open') ...
Oder ist die eigentliche Frage: Man will nicht nur auf ein Muster triggern sondern man will auf mehrere Muster triggern? Egal ob Wetterstation oder Ess10 einen Event liefert?
Dann müsste der Trigger so aussehen und beide Werte müssen in der Bedingung abgefragt werden:
Wetterstation:solarradiation:.0|Ess10:/essinfo/home/direction/is_battery_discharging_:.*
Wobei ich nicht genau weiß was ob die Slash maskiert werden müssten. ???

Zitatwas zum Teufel sind denn jetzt schon wieder Quotes?
'einfache'
"doppelte"
keine

das ist doppelt gemoppelt - aber stimmt dies solarradiation.0 ? fehlt da nicht der Doppelpunkt?
Hast Du den Eventmonitor benutzt?
Wetterstation:solarradiation.0 {if ($EVTPART1 eq 0) {fhem('set Buero_Decke off')}}
geht dann so  ;)
Wetterstation:solarradiation:.0 set Buero_Decke off
war aber nicht Dein Ziel  :D
Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: Beta-User am 31 März 2022, 14:27:19
"Quotes" sind in Perl u.a. doppelte und einfache Anführungszeichen. Zur Vertiefung vielleicht: https://www.perlmonks.org/?node_id=401006 (https://www.perlmonks.org/?node_id=401006)

@Otto123:
eq 0 funktioniert vermutlich nicht, entweder
eq '0'oder
== 0
(oder eben "!", aber das lassen wir hier erst mal beiseite)

@derFelix:
Aller Anfang ist schwer, es braucht schon einen gewissen Willen, sich durch diesen Wust erst mal durchzubeißen, sonst ist es in der Tat schwierig.
Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: Otto123 am 31 März 2022, 14:31:10
@Jörg: Doch wenn oben eq 0 funktioniert muss es auch unten gehen  ::)  {0 eq 0?1:0}funktioniert mit und ohne

@felix lists wären gut :) https://forum.fhem.de/index.php/topic,71806.0.html
Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: derFelix am 31 März 2022, 15:09:44
Danke für eure Mühe.
warum bei
Wetterstation:solarradiation.* {if (ReadingsVal('Wetterstation', 'solarradiation', 'undef') eq 0) {fhem('set Buero_Decke off')}}
nichts passiert und das hier
Wetterstation:solarradiation.* {if ($EVTPART1 eq 0) {fhem('set Buero_Decke off')}}
aber funktioniert verstehe ich nicht. Auch die 0 in '-Striche gehüllt verbessert nichts.

Auslösen muss das notify unabhängig davon, welche Bedingung eher eintrifft, aber beide müssen erfüllt sein. Also müssen beide Bedingungen als Trigger eingesetzt werden.

Zitatdas ist doppelt gemoppelt - aber stimmt dies solarradiation.0 ? fehlt da nicht der Doppelpunkt?
Hast Du den Eventmonitor benutzt?
Code: [Auswählen]
Wetterstation:solarradiation.0 {if ($EVTPART1 eq 0) {fhem('set Buero_Decke off')}}
geht dann so  ;)
Code: [Auswählen]
Wetterstation:solarradiation:.0 set Buero_Decke off
war aber nicht Dein Ziel  :D

Mit Doppelpunkt funktioniert nicht, nur ohne.
Event-Monitor, gefiltert auf PV_off.* zeigt die selbst getriggerte Auslösung nicht an, obwohl mein Licht aus geht.
Ja, es ist tatsächlich doppelt gemoppelt und mit Deiner 2. Codezeile für mich viel logischer und einfacher.
So habe ich es jetzt gesetzt:
Wetterstation:solarradiation.0|Ess10:/essinfo/home/direction/is_battery_discharging_.0 set Buero_Decke off
Da battery-discharging gerade bei 0 steht, geht mit dem solarradiation-trigger 0 das Licht aus. Ob es das schon war?

Zitat@felix lists wären gut :) https://forum.fhem.de/index.php/topic,71806.0.html
Readings aus Ess10:
ZitatREADINGS:
     2022-03-31 15:14:20   /essinfo/common/BATT/backup_setting on
     2022-03-31 15:14:20   /essinfo/common/BATT/backup_soc 11
     2022-03-31 15:14:20   /essinfo/common/BATT/backup_status off
     2022-03-31 15:14:20   /essinfo/common/BATT/dc_power 0
     2022-03-31 15:14:20   /essinfo/common/BATT/month_batt_charge_energy 28551
     2022-03-31 15:14:20   /essinfo/common/BATT/month_batt_discharge_energy 24920
     2022-03-31 15:14:20   /essinfo/common/BATT/safety_soc 10
     2022-03-31 15:14:20   /essinfo/common/BATT/soc 0.0
     2022-03-31 15:14:20   /essinfo/common/BATT/status 0
     2022-03-31 15:14:20   /essinfo/common/BATT/today_batt_charge_energy 859
     2022-03-31 15:14:20   /essinfo/common/BATT/today_batt_discharge_enery 142
     2022-03-31 15:14:20   /essinfo/common/BATT/winter_setting off
     2022-03-31 15:14:20   /essinfo/common/BATT/winter_status off
     2022-03-31 15:14:20   /essinfo/common/GRID/a_phase 233.300003
     2022-03-31 15:14:20   /essinfo/common/GRID/active_power 310
     2022-03-31 15:14:20   /essinfo/common/GRID/freq 49.970001
     2022-03-31 15:14:20   /essinfo/common/GRID/month_grid_feed_in_energy 56011
     2022-03-31 15:14:20   /essinfo/common/GRID/month_grid_power_purchase_energy 31445
     2022-03-31 15:14:20   /essinfo/common/GRID/today_grid_feed_in_energy 162
     2022-03-31 15:14:20   /essinfo/common/GRID/today_grid_power_purchase_energy 6702
     2022-03-31 15:14:20   /essinfo/common/LOAD/load_power 785
     2022-03-31 15:14:20   /essinfo/common/LOAD/month_batt_discharge_energy 24920
     2022-03-31 15:14:20   /essinfo/common/LOAD/month_grid_power_purchase_energy 31445
     2022-03-31 15:14:20   /essinfo/common/LOAD/month_load_consumption_sum 94405
     2022-03-31 15:14:20   /essinfo/common/LOAD/month_pv_direct_consumption_energy 38040
     2022-03-31 15:14:20   /essinfo/common/LOAD/today_batt_discharge_enery 142
     2022-03-31 15:14:20   /essinfo/common/LOAD/today_grid_power_purchase_energy 6702
     2022-03-31 15:14:20   /essinfo/common/LOAD/today_load_consumption_sum 10533
     2022-03-31 15:14:20   /essinfo/common/LOAD/today_pv_direct_consumption_enegy 3689
     2022-03-31 15:14:20   /essinfo/common/PCS/feed_in_limitation 100
     2022-03-31 15:14:20   /essinfo/common/PCS/month_co2_reduction_accum 87047
     2022-03-31 15:14:20   /essinfo/common/PCS/month_grid_feed_in_energy 56011
     2022-03-31 15:14:20   /essinfo/common/PCS/month_pv_generation_sum 122602
     2022-03-31 15:14:20   /essinfo/common/PCS/operation_mode 1
     2022-03-31 15:14:20   /essinfo/common/PCS/pcs_stauts 3
     2022-03-31 15:14:20   /essinfo/common/PCS/today_grid_feed_in_energy 162
     2022-03-31 15:14:20   /essinfo/common/PCS/today_pv_generation_sum 4710
     2022-03-31 15:14:20   /essinfo/common/PCS/today_self_consumption 96.6
     2022-03-31 15:14:20   /essinfo/common/PV/brand LGE-SOLAR
     2022-03-31 15:14:20   /essinfo/common/PV/capacity 9800
     2022-03-31 15:14:20   /essinfo/common/PV/pv1_current 0.660000
     2022-03-31 15:14:20   /essinfo/common/PV/pv1_power 243
     2022-03-31 15:14:20   /essinfo/common/PV/pv1_voltage 501.799988
     2022-03-31 15:14:20   /essinfo/common/PV/pv2_current 0.640000
     2022-03-31 15:14:20   /essinfo/common/PV/pv2_power 232
     2022-03-31 15:14:20   /essinfo/common/PV/pv2_voltage 495.100006
     2022-03-31 15:14:20   /essinfo/common/PV/pv3_current 0.020000
     2022-03-31 15:14:20   /essinfo/common/PV/pv3_power 1
     2022-03-31 15:14:20   /essinfo/common/PV/pv3_voltage 72.900002
     2022-03-31 15:14:20   /essinfo/common/PV/today_month_pv_generation_sum 122602
     2022-03-31 15:14:20   /essinfo/common/PV/today_pv_generation_sum 4710
     2022-03-31 15:14:20   /essinfo/home/direction/is_battery_charging_ 0
     2022-03-31 15:14:20   /essinfo/home/direction/is_battery_discharging_ 0
     2022-03-31 15:14:20   /essinfo/home/direction/is_charging_from_grid_ 0
     2022-03-31 15:14:20   /essinfo/home/direction/is_direct_consuming_ 1
     2022-03-31 15:14:20   /essinfo/home/direction/is_discharging_to_grid_ 0
     2022-03-31 15:14:20   /essinfo/home/direction/is_grid_buying_ 1
     2022-03-31 15:14:20   /essinfo/home/direction/is_grid_selling_ 0
     2022-03-31 15:14:20   /essinfo/home/evcharger/ev_activate off
     2022-03-31 15:14:20   /essinfo/home/evcharger/ev_power 0
     2022-03-31 15:14:20   /essinfo/home/heatpump/current_temp 0
     2022-03-31 15:14:20   /essinfo/home/heatpump/heatpump_activate off
     2022-03-31 15:14:20   /essinfo/home/heatpump/heatpump_protocol 0
     2022-03-31 15:14:20   /essinfo/home/heatpump/heatpump_working off
     2022-03-31 15:14:20   /essinfo/home/operation/drm_control 255
     2022-03-31 15:14:20   /essinfo/home/operation/drm_mode0 0
     2022-03-31 15:14:20   /essinfo/home/operation/mode 1
     2022-03-31 15:14:20   /essinfo/home/operation/pcs_standbymode false
     2022-03-31 15:14:20   /essinfo/home/operation/remote_mode 0
     2022-03-31 15:14:20   /essinfo/home/operation/status start
     2022-03-31 15:14:20   /essinfo/home/pcs_fault/pcs_op_status pcs_run
     2022-03-31 15:14:20   /essinfo/home/pcs_fault/pcs_status pcs_ok
     2022-03-31 15:14:20   /essinfo/home/statistics/ac_output_power 10
     2022-03-31 15:14:20   /essinfo/home/statistics/bat_status 0
     2022-03-31 15:14:20   /essinfo/home/statistics/bat_use 1
     2022-03-31 15:14:20   /essinfo/home/statistics/bat_user_soc 0.0
     2022-03-31 15:14:20   /essinfo/home/statistics/batconv_power 0
     2022-03-31 15:14:20   /essinfo/home/statistics/current_day_self_consumption 96.6
     2022-03-31 15:14:20   /essinfo/home/statistics/current_grid_feed_in_energy 162
     2022-03-31 15:14:20   /essinfo/home/statistics/current_pv_generation_sum 4710
     2022-03-31 15:14:20   /essinfo/home/statistics/grid_power 310
     2022-03-31 15:14:20   /essinfo/home/statistics/load_power 785
     2022-03-31 15:14:20   /essinfo/home/statistics/load_today 0.0
     2022-03-31 15:14:20   /essinfo/home/statistics/pcs_pv_total_power 475
     2022-03-31 15:14:20   /essinfo/home/wintermode/backup_status off
     2022-03-31 15:14:20   /essinfo/home/wintermode/winter_status off
     2022-03-31 15:14:20   /setting/batt/alg_setting fast_charge
     2022-03-31 15:14:20   /setting/batt/backup_setting on
     2022-03-31 15:14:20   /setting/batt/backup_soc 11
     2022-03-31 15:14:20   /setting/batt/backup_status off
     2022-03-31 15:14:20   /setting/batt/enervu_activated true
     2022-03-31 15:14:20   /setting/batt/enervu_upload on
     2022-03-31 15:14:20   /setting/batt/internet_connection connected
     2022-03-31 15:14:20   /setting/batt/safety_soc 10
     2022-03-31 15:14:20   /setting/batt/startdate 1231
     2022-03-31 15:14:20   /setting/batt/stopdate 0101
     2022-03-31 15:14:20   /setting/batt/winter_setting off
     2022-03-31 15:14:20   /setting/batt/winter_status off
     2022-03-31 15:14:19   /setting/network/connected internet_connected
     2022-03-31 15:14:19   /setting/network/dns 192.168.1.1
     2022-03-31 15:14:19   /setting/network/drmcontrol 255
     2022-03-31 15:14:19   /setting/network/gateway 192.168.1.1
     2022-03-31 15:14:19   /setting/network/ip 192.168.1.150
     2022-03-31 15:14:19   /setting/network/mask 255.255.255.0
     2022-03-31 15:14:19   /setting/network/pms_orient 255
     2022-03-31 15:14:19   /setting/network/registered 1
     2022-03-31 15:14:19   /setting/network/remote_control 0
     2022-03-31 15:14:19   /setting/network/setting auto
     2022-03-31 15:14:19   /setting/network/type wireless
     2022-03-31 15:14:19   /setting/systeminfo/batt/capacity 98
     2022-03-31 15:14:19   /setting/systeminfo/batt/install_date 2020-12-18
     2022-03-31 15:14:19   /setting/systeminfo/pms/ac_input_power 13500
     2022-03-31 15:14:19   /setting/systeminfo/pms/ac_output_power 10
     2022-03-31 15:14:19   /setting/systeminfo/pms/install_date 2020-12-18
     2022-03-31 15:14:19   /setting/systeminfo/pms/model D010KE1N211
     2022-03-31 15:14:19   /setting/systeminfo/pms/serialno DE2005BKRE028561
     2022-03-31 15:14:19   /setting/systeminfo/version/bms_unit1_version BMS 01.07.00.01 / DCDC 7K.4.8
     2022-03-31 15:14:19   /setting/systeminfo/version/bms_unit2_version 
     2022-03-31 15:14:19   /setting/systeminfo/version/bms_version BMS 01.07.00.01 / DCDC 7K.4.8
     2022-03-31 15:14:19   /setting/systeminfo/version/pcs_version LG 04.00.01.00 R130 1.126.3
     2022-03-31 15:14:19   /setting/systeminfo/version/pms_build_date 2022-01-28 R1506
     2022-03-31 15:14:19   /setting/systeminfo/version/pms_version 10.05.7250

Readings aus Wetterstation:
ZitatREADINGS:
     2022-03-25 18:40:32   Activity        alive
     2022-03-31 15:15:03   UV              0
     2022-03-31 15:15:03   UVR             0
     2022-03-30 17:55:32   UVcondition     low
     2022-03-30 17:55:32   UVcondition_rgb 4C9329
     2022-03-31 07:03:03   condition       cloudy
     2022-03-31 07:03:03   daylight        1
     2022-03-31 15:15:03   dewpoint        2.3
     2022-03-31 15:15:03   dewpoint_f      36.1
     2022-03-31 15:15:03   humidity        97
     2022-03-31 15:15:03   humidityAbs     5.7
     2022-03-31 15:15:03   humidityAbs_f   42.2
     2022-03-29 21:40:07   humidityCondition wet
     2022-03-29 21:40:07   humidityCondition_rgb 0066CC
     2022-03-31 15:15:03   indoorDewpoint  5.3
     2022-03-31 15:15:03   indoorDewpoint_f 47.0
     2022-03-31 15:15:03   indoorHumidity  43
     2022-03-31 15:15:03   indoorHumidityAbs 6.6
     2022-03-31 15:15:03   indoorHumidityAbs_f 68.1
     2022-03-27 06:34:18   indoorHumidityCondition ideal
     2022-03-27 06:34:18   indoorHumidityCondition_rgb 4C9329
     2022-03-31 15:15:03   indoorTemperature 18.1
     2022-03-27 07:10:33   indoorTemperatureCondition low
     2022-03-27 07:10:33   indoorTemperatureCondition_rgb 009999
     2022-03-31 15:15:03   indoorTemperature_f 64.6
     2022-03-30 19:43:03   israining       0
     2022-03-31 15:15:03   luminosity      9113.5
     2022-03-31 15:15:03   pressure        983.5
     2022-03-31 15:15:03   pressureAbs     944.1
     2022-03-31 15:15:03   pressureAbs_in  27.880
     2022-03-31 15:15:03   pressureAbs_mm  7.1
     2022-03-31 15:15:03   pressure_in     29.043
     2022-03-31 15:15:03   pressure_mm     7.4
     2022-03-31 15:15:03   rain            0.0
     2022-03-31 15:15:03   rain_day        0.0
     2022-03-31 15:15:03   rain_day_in     0.000
     2022-03-31 15:15:03   rain_in         0.000
     2022-03-31 15:15:03   rain_month      12.5
     2022-03-31 15:15:03   rain_month_in   0.492
     2022-03-31 15:15:03   rain_week       8.4
     2022-03-31 15:15:03   rain_week_in    0.331
     2022-03-31 15:15:03   solarradiation  71.93
     2022-03-31 15:15:03   state           T: 2,7 °C H: 97 % Ti: 18,1 °C Hi: 43 % W: 6 km/h Wg: 9 km/h P: 72 W/m²
     2022-03-31 15:15:03   temperature     2.7
     2022-03-31 15:04:24   temperatureCondition freeze
     2022-03-31 15:04:24   temperatureCondition_rgb 0055BB
     2022-03-31 15:15:03   temperature_f   36.9
     2022-03-31 15:04:24   windCondition   light_breeze
     2022-03-31 15:04:24   windCondition_rgb B1FCD0
     2022-03-30 02:25:33   windWarning     
     2022-03-31 15:15:03   wind_chill      1.1
     2022-03-31 15:15:03   wind_chill_f    34.0
     2022-03-31 15:15:03   wind_compasspoint NE
     2022-03-31 15:12:54   wind_compasspoint_avg10m E
     2022-03-31 15:15:03   wind_compasspoint_avg2m NNE
     2022-03-31 15:15:03   wind_direction  42
     2022-03-31 15:15:03   wind_direction_avg2m 32
     2022-03-31 15:15:03   wind_gust       9.4
     2022-03-31 15:15:03   wind_gust_bft   2
     2022-03-31 15:15:03   wind_gust_direction_avg10m 97
     2022-03-31 15:15:03   wind_gust_fts   8.5
     2022-03-31 15:15:03   wind_gust_kn    5.1
     2022-03-31 15:08:39   wind_gust_max10m 11.2
     2022-03-31 15:15:03   wind_gust_mph   5.8
     2022-03-31 15:08:39   wind_gust_mph_max10m 6.9
     2022-03-31 15:15:03   wind_gust_mps   2.6
     2022-03-31 15:15:03   wind_speed      6.1
     2022-03-31 15:15:03   wind_speed_avg2m 6.4
     2022-03-31 15:15:03   wind_speed_bft  2
     2022-03-31 15:12:54   wind_speed_bft_avg2m 2
     2022-03-31 15:15:03   wind_speed_fts  5.6
     2022-03-31 15:15:03   wind_speed_kn   3.3
     2022-03-31 15:15:03   wind_speed_kn_avg2m 3.5
     2022-03-31 15:15:03   wind_speed_mph  3.8
     2022-03-31 15:12:54   wind_speed_mph_avg2m 4.0
     2022-03-31 15:15:03   wind_speed_mps  1.7
     2022-03-31 15:12:54   wind_speed_mps_avg2m 1.8



Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: derFelix am 31 März 2022, 16:19:23
Das funktioniert nicht:
Wetterstation:solarradiation:.0|Ess10:/essinfo/home/direction/is_battery_discharging_:.0 set Buero_Decke off
Der Teiler | löst offensichtlich aus, wenn eines der beiden Ereignisse eintritt, aber es reicht eine Bedingung aus für die Auslösung. Eine klassische oder-Schaltung, aber nicht meine benötigte und-schaltung.

Und den Doppelpunkt benötige ich doch, ich hatte einen Fehler bei der manuellen Triggerauslösung eingebaut...
Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: Beta-User am 31 März 2022, 16:28:11
Wie gibts du das ein? Bitte nur über FHEMWEB arbeiten.

Irgendwie fehlen mir da ein paar Doppelpunkte, und die Querstriche sind auch "verdächtig". Jetzt doch mal ein Versuch mit "!":Wetterstation:solarradiation:.0|Ess10:.essinfo.home.direction.is_battery_discharging_:.0 {fhem('set Buero_Decke off') if ReadingsVal('Buero_Decke','state','on') ne 'off' && !ReadingsVal('Ess10','/essinfo/home/direction/is_battery_discharging_','1') && !ReadingsVal('Wetterstation','solarradiation','1') }

Bitte ausnahmsweise nicht das "trigger"-Kommando nehmen, sondern
setreading Wetterstation solarradiation 0

EDIT: und da wir nur auszugesweise list haben: event-on-change-reading darf dann in "Wetterstation" nicht so gesetzt sein, dass der Event nicht unterbunden wird...
Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: Otto123 am 31 März 2022, 17:00:52
ZitatAuslösen muss das notify unabhängig davon, welche Bedingung eher eintrifft, aber beide müssen erfüllt sein. Also müssen beide Bedingungen als Trigger eingesetzt werden.
ZitatDer Teiler | löst offensichtlich aus, wenn eines der beiden Ereignisse eintritt, aber es reicht eine Bedingung aus für die Auslösung. Eine klassische oder-Schaltung, aber nicht meine benötigte und-schaltung.
Was denn nun? ::)
Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: derFelix am 31 März 2022, 17:16:10
ZitatZitat
Auslösen muss das notify unabhängig davon, welche Bedingung eher eintrifft, aber beide müssen erfüllt sein. Also müssen beide Bedingungen als Trigger eingesetzt werden.
Zitat
Der Teiler | löst offensichtlich aus, wenn eines der beiden Ereignisse eintritt, aber es reicht eine Bedingung aus für die Auslösung. Eine klassische oder-Schaltung, aber nicht meine benötigte und-schaltung.
Was denn nun? ::)
Entschuldige, war blöd ausgedrückt: Zeile 1 war mein Wunsch, Zeile 2 eine (nicht gewünschte) Zustandsbeschreibung.

ZitatWie gibts du das ein? Bitte nur über FHEMWEB arbeiten.

Irgendwie fehlen mir da ein paar Doppelpunkte, und die Querstriche sind auch "verdächtig". Jetzt doch mal ein Versuch mit "!":
Code: [Auswählen]
Wetterstation:solarradiation:.0|Ess10:.essinfo.home.direction.is_battery_discharging_:.0 {fhem('set Buero_Decke off') if ReadingsVal('Buero_Decke','state','on') ne 'off' && !ReadingsVal('Ess10','/essinfo/home/direction/is_battery_discharging_','1') && !ReadingsVal('Wetterstation','solarradiation','1') }

Bitte ausnahmsweise nicht das "trigger"-Kommando nehmen, sondern
Code: [Auswählen]
setreading Wetterstation solarradiation 0

Ich geb alles über FHEM Web ein.
Ich habe obigen Code eingegeben, bei Befehl "setreading" auf die solarradiation löst das notify aus, mit dem trigger-Befehl nicht. Beide male war battery_discharging 0. Nun versuche ich mal die ! zu verstehen. Ob das jetzt mit Betrieb auf Akku auch geht, weiß ich aber nicht. Vielen Dank für die Mühe.
Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: Beta-User am 31 März 2022, 17:22:50
Dein Trigger-Kommando war wie vermutet "kaputt"...

Das "!" ist einfach die Kurzform von "nicht", der Ausdruck wird "wahr", wenn die jeweilige Reading-Abfrage, die danach kommt nicht "0", (Perl-) undef oder '' (leerer Text) liefert.
Ergänzend: "&&" ist die Kurzform von "logisch und" (aber nicht (!) gleichbedeutend mit "and"), "logisch oder" wäre "||" (was wiederum nicht ganz dasselbe ist wie das (leider) häufig hier zu findende "or").
Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: Otto123 am 31 März 2022, 23:00:43
Zitat von: derFelix am 31 März 2022, 17:16:10
Entschuldige, war blöd ausgedrückt: Zeile 1 war mein Wunsch, Zeile 2 eine (nicht gewünschte) Zustandsbeschreibung.
Ich wiederhole mal für mich: Dein Wunsch war: Es sollen beide Devices triggern. Der Zustand wäre: es triggern beide Devices - wieso ist das jetzt nicht gewünscht?
Der Trigger
Wetterstation:solarradiation:.0|Ess10:.essinfo.home.direction.is_battery_discharging_:.0
löst aus wenn solarradiation auf 0 geht und / oder löst aus wenn is_battery_discharging_ auf 0 geht. Der logische Begriff und / oder hängt jetzt hier von der Sichtweise ab.
Beide Ereignisse triggern: das eine oder das andere ...
Beide Ereignisse kommen nicht gleichzeitig - also und gibt es quasi nicht - es müssen nicht beide auftreten.
Egal welcher Wert den Trigger setzt, die Abfrage erfolgt über beide Werte - im nachfolgenden if(){}
Beispiel:
um 10:45 geht solarradiation auf 0 - notify löst aus, Abfrage wird gestartet.
um 10:56 geht is_battery_discharging_ auf 0  - notify löst aus, Abfrage wird gestartet.

Es war nur eine Frage von mir! Kann sein, deine Intension war:
wenn is_battery_discharging_  auf 0 geht will ich ich den Wert  solarradiation wissen.
wenn solarradiation auf 0 geht will ich den Wert  is_battery_discharging_  wissen.
wenn sich solarradiation ändert will ich beide Werte abfragen.
wenn sich is_battery_discharging_ ändert will ich beide Werte abfragen.
wenn sich einer der beiden Werte ändert will ich beide Werte abfragen.
:D
Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: derFelix am 31 März 2022, 23:20:14
Puh, dass die Abfragen so schwierig werden können...   ???

Also ich möchte, dass jedesmal, wenn entweder battery_discharging_ ODER solarradiation auf 0 fällt abgefragt wird, ob BEIDE Werte bei 0 liegen. Nur in diesem Fall ( 2mal 0) soll geschaltet werden. Also die Abfrage als ODER, die Schaltung als UND. Für mich als Leihe schwierig, schon solche Details in Worte zu fassen.

Ziel der Übung: Ich Lese aus der PV-Anlage aus, ob bei Dunkelheit Strom aus dem Akku genommen wird. Solange dies der Fall ist, soll der Wechselrichter weiter laufen. Wenn jedoch der Akku alle ist, soll der Wechselrichter ausgeschaltet werden, um Energie zu sparen, da die Anlage das jedenfalls nicht zuverlässig hin bekommt. Früh, wenn es wieder hell wird, soll die Anlage natürlich wieder in Bereitschaft gesetzt werden, um die Sonnenenergie möglichst auch voll nutzen zu können.
Nun kann es aber auch sein, dass an trüben Tagen der Akku nur ganz wenig geladen wird und ein strafferer Verbraucher den Akku auch am Mittag leer saugt, obwohl die Anlage noch Strom, wenn auch nicht viel, liefert. Dann soll die Anlage natürlich bis zum Eintreten der Dunkelheit weiter laufen, obwohl der Akku lange leer ist.

Ich hoffe, ich konnte mich halbwegs verständlich ausdrücken. Als Statiker kann ich zwar abstrakt denken, dass mir viele in meinem Fachgebiet auch schwer folgen können, aber eine Aufdröselung meines Problems in eine ODER und eine UND-Funktion hab ich nicht hin bekommen...

Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: Otto123 am 31 März 2022, 23:50:55
Alles gut, dann hast Du Dir jetzt genau die Funktion von Beta-Users Vorschlag in #14 erklärt :) Der prüft zusätzlich noch ob der Wechselrichter schon aus ist.
Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: derFelix am 03 April 2022, 01:12:08
So, nun hatte ich Zeit, alles durch zu probieren. Es klappt leider immer noch nicht.
1. Problem ist, dass is_battery_discharging_ auf bei einem Akkustand von 0% weiterhin auf 1 stehen bleibt. Das konnte ich ändern, indem ich den Ladestand des Akkus als trigger nutze.
Folgende Änderungen habe ich nun durchgeführt:
Wetterstation:solarradiation:.0.00|Ess10:/essinfo/common/BATT/soc:.0.0 {fhem('set Buero_Decke off') if ReadingsVal('Buero_Decke','state','on') ne 'off' && ReadingsVal('Ess10','/essinfo/common/BATT/soc','0.0') && ReadingsVal('Wetterstation','solarradiation','0.00') }

Es sieht so aus, als ob nicht mit Zahlen, sondern mit Zeichenfolgen hantiert wird, und dementsprechend muss der Ausdruck im notify exakt dem Ausdruck im Reading gleichen ( 0.00 und 0.0 statt einfach 0). Demzufolge funktionierten auch die !ReadingsVal-Ausdrücke nicht.

Wie kann ich den Ausdruck ReadingsVal('Wetterstation','solarradiation','0') so ändern, dass er als Zahl erkannt wird und auch mit größer, kleiner und gleich gearbeitet werden kann?

Mit oben genannten Ausdruck schaltet das notify immer, wenn auch nur ein Wert 0 erreicht, also auch, wenn beispielsweise solarradiation auf 100 steht und Ess10:/essinfo/common/BATT/soc: auf 0.0 fällt. Das dürfte doch bei obigem notify nicht passieren, werden doch 3 Bedingungen abgefragt (Schalter an oder aus? Solarradiation bei 0? Ladestand 0%?) und nur bei eintreten aller Bedingungen sollte das notify schalten.

Edit:
Bei folgendem notify erkennt er die Werte auch als Zahlen:

Wetterstation:solarradiation:.* {fhem('set Buero_Decke on') if ReadingsVal('Buero_Decke','state','off') ne 'on' && ($EVTPART1 > 0) }

Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: Otto123 am 03 April 2022, 01:31:58
ZitatEs sieht so aus, als ob nicht mit Zahlen, sondern mit Zeichenfolgen hantiert wird, und dementsprechend muss der Ausdruck im notify exakt dem Ausdruck im Reading gleichen ( 0.00 und 0.0 statt einfach 0). Demzufolge funktionierten auch die !ReadingsVal-Ausdrücke nicht.
Hast Du eigentlich schon mal ein bisschen Grundlagen gelesen?
https://wiki.fhem.de/wiki/Erste_Schritte_in_FHEM#Bei_Event_ausf.C3.BChren_-_notify
Zitat
Wie kann ich den Ausdruck ReadingsVal('Wetterstation','solarradiation','0') so ändern, dass er als Zahl erkannt wird und auch mit größer, kleiner und gleich gearbeitet werden kann?
ReadingsNum() verwenden. https://fhem.de/commandref_DE.html#perl

Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: derFelix am 03 April 2022, 21:56:11
ZitatHast Du eigentlich schon mal ein bisschen Grundlagen gelesen?
https://wiki.fhem.de/wiki/Erste_Schritte_in_FHEM#Bei_Event_ausf.C3.BChren_-_notify
Ja, das habe ich gelesen und versucht, zu verstehen. Nur steht da nichts zu meinem Problem drin. Deswegen frage ich nach.
ZitatReadingsNum() verwenden.
Genau das war der entscheidende Hinweis. Vielen Dank. Damit habe ich mein Problem entgültig gelöst bekommen:
Wetterstation:solarradiation:.0.00|Ess10:/essinfo/common/BATT/soc:.0.0 {fhem('set Ess10 System off') if ReadingsVal('Ess10','/essinfo/home/operation/status','start') ne 'stop' && ReadingsNum('Ess10','/essinfo/common/BATT/soc','1') == 0 && ReadingsNum('Wetterstation','solarradiation','1') == 0 }
Danke euch beiden, ihr habt mir gut weiter geholfen!



Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: Otto123 am 03 April 2022, 22:07:12
Wenn ich deinen Beitrag #21 richtig verstehe ist das nicht richtig. Und Du hast nicht verstanden, dass im notify im vorderen Teil mit Suchmustern gearbeitet wird und Zahlen quasi keine Rolle spielen. Die ReadingsXXX() Funktionen lesen die exakten Werte aus, so wie sie sind. ReadinsgNum() extrahiert aus eine Zeichenkette die Zahl - aus 20% wird also eine 20.

Deswegen solltest Du wahrscheinlich besser auf alles triggern:
Wetterstation:solarradiation:.*|Ess10:/essinfo/common/BATT/soc:.*

Ein Suchmuster auf einen bestimmten Zahlenbereich kann man zwar machen, ist aber hohe Schule. Ganz oben war ich mal von exakt 0 ausgegangen, das wiederum ist einfach :)
Titel: Antw:notify mit 2 Bedingungen aus Readings
Beitrag von: derFelix am 03 April 2022, 22:18:21
Das habe ich schon verstanden, deswegen steht auch im vorderen Suchmuster nicht 0, sondern 0.0 bzw. 0.00.
Wenn ich es wie Du beschrieben eingebe:
ZitatDer Trigger
Code: [Auswählen]
Wetterstation:solarradiation:.0|Ess10:.essinfo.home.direction.is_battery_discharging_:.0
löst aus wenn solarradiation auf 0 geht und / oder löst aus wenn is_battery_discharging_ auf 0 geht.
Dann wird nicht ausgelöst. Es wird eben nicht als Zahl erkannt, sondern als Zeichenfolge. Wenn ich aber die Werte nummerisch vergleichen möchte, was für mich am logischsten ist, ist readingsnum() der richtige Ansatz.

Edit:
grade gesehen: Du beziehst Du auf den Eintrag weiter oben.
Du hast recht, wahrscheinlich hätte der auch schon funktioniert, nur nicht auslösbar mit manuellem triggern, oder ich habe meinen Raspberry zu stark geärgert...