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
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.
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.
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...
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.
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).
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?
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).
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.
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
"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.
@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
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
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...
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...
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? ::)
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.
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").
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
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...
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.
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) }
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
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!
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 :)
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...