go-echarger als mqtt-device - meine Konfig

Begonnen von blueberry63, 17 November 2019, 14:59:30

Vorheriges Thema - Nächstes Thema

blueberry63

Hallo,

ich wollte Euch meine Konfiguration des go-echarger als MQTT2_DEVICE inkl. dem Schalten von "Laden: EIN/AUS" vorstellen:


define MQTT2_goecharger MQTT2_DEVICE go_eCharger_xxxxxx_yy
attr MQTT2_goecharger DbLogExclude .*
attr MQTT2_goecharger IODev mqtt2srv
attr MQTT2_goecharger event-on-change-reading .*
attr MQTT2_goecharger readingList go-eCharger/xxxxxx/status:.* { json2nameValue($EVENT) }\
go-eCharger/xxxxxx/ip:.* { json2nameValue($EVENT) }
attr MQTT2_goecharger room Aussen,Energie,MQTT2_DEVICE
attr MQTT2_goecharger setList Laden_EIN:noArg go-eCharger/xxxxxx/cmd/req alw=1\\
Laden_AUS:noArg go-eCharger/xxxxxx/cmd/req alw=0\

attr MQTT2_goecharger stateFormat Status: Stecker_Kabel P_akt: energy_akt V1: nrg_1 V2: nrg_2 V3: nrg_3
attr MQTT2_goecharger userReadings Stecker_Kabel  { if(ReadingsVal("MQTT2_goecharger","car","") eq "1") { return "Bereit" } elsif\
(ReadingsVal("MQTT2_goecharger","car","") eq "2") { return "Fzg laedt" }\
elsif (ReadingsVal("MQTT2_goecharger","car","") eq "3") { return "Warte auf Fzg" }\
elsif (ReadingsVal("MQTT2_goecharger","car","") eq "4") { return "Laden beendet" }\
else { return -1 } }, temperature { ReadingsVal("MQTT2_goecharger","tmp",0) }, energy_total { ReadingsVal("MQTT2_goecharger","eto",0)*0.1 }, energy_akt { ReadingsVal("
MQTT2_goecharger","dws",0)*2.77 }


Weitere Schaltmöglichkeiten können in der API-Beschreibung auf der Herstellerseite nachgelesen werden.

Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

Beta-User

Danke für's teilen.

Habe mal versucht, daraus ein attrTemplate zu basteln, feedback wäre willkommen.
Wäre nett, wenn ich kurzfristig Rückmeldung dazu bekäme, sonst kommt es "auf Verdacht" demnächst per update.

(Zum Testen kannst du eine Kopie deines Devices nehmen, das template hat teilweise etwas andere Benennungen usw.):
#source post: https://forum.fhem.de/index.php/topic,105457.msg993924.html#msg993924
name:go_eCharger
filter:TYPE=MQTT2_DEVICE
desc:See source post: https://forum.fhem.de/index.php/topic,105457.msg993924.html#msg993924 for details.
order:W_02
par:BASE_ID;BASE_ID typically is go-eCharger;{ AttrVal("DEVICE","readingList","") =~ m,(go-eCharger)[/][^/]+[/].*:, ? $1 : undef }
par:DEVNAME;Device name as configured;{ AttrVal("DEVICE","readingList","") =~ m,([^:]+)[/]([^/]+)[/].*:, ? $1 : undef }
par:ICON;ICON as set, defaults to mqtt;{ AttrVal("DEVICE","icon","mqtt") }
attr DEVICE icon ICON
attr DEVICE event-on-change-reading .*
attr DEVICE readingList BASE_ID/DEVNAME/status:.* { json2nameValue($EVENT) }\
  BASE_ID/DEVNAME/ip:.* { json2nameValue($EVENT) }
attr DEVICE setList Charge_ON:noArg BASE_ID/DEVNAME/cmd/req alw=1\
  Charge_OFF:noArg BASE_ID/DEVNAME/cmd/req alw=0
attr DEVICE stateFormat Status: charger_state P_akt: energy_akt V1: nrg_1 V2: nrg_2 V3: nrg_3
attr DEVICE userReadings charger_state:car.* { my $val = ReadingsVal($name,"car","none");; my %rets = ("none"  => "-1","1" => "Ready","2" => "Charging","3" => "waiting for car","4" => "Charging finished");; $rets{$val}}, temperature:temp.* { ReadingsVal($name,"tmp",0) }, energy_total:eto.* { ReadingsVal($name,"eto",0)*0.1 }, energy_akt:dws.* { ReadingsVal($name,"dws",0)*2.77 }
attr DEVICE model go_eCharger


Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

blueberry63

Hallo Beta-User,

danke für Deine Mühe. Ich kann frühestens morgen versuchen, das Template zu testen. Ich habe allerdings noch nie mit Templates gearbeitet  ::) . Wie kann ich das Testen?

Und noch etwas: Eine nützliche Schaltfunktion ist wohl das Einstellen der Ampere-Zahl und das wollte ich noch einbauen, hatte aber noch keine Zeit.

Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

Beta-User

#3
Hallo,

Danke für die schnelle Antwort.

Da sollte auch der setter für den Ladestrom funktionieren (ob die wählbaren Werte sinnvoll sind, kann ich aber nicht sagen...):
#source post: https://forum.fhem.de/index.php/topic,105457.msg993924.html#msg993924
name:go_eCharger
filter:TYPE=MQTT2_DEVICE
desc:See source post: https://forum.fhem.de/index.php/topic,105457.msg993924.html#msg993924 for details.
order:W_02
par:BASE_ID;BASE_ID typically is go-eCharger;{ AttrVal("DEVICE","readingList","") =~ m,(go-eCharger)[/][^/]+[/].*:, ? $1 : undef }
par:DEVNAME;Device name as configured;{ AttrVal("DEVICE","readingList","") =~ m,([^:]+)[/]([^/]+)[/].*:, ? $1 : undef }
par:ICON;ICON as set, defaults to mqtt;{ AttrVal("DEVICE","icon","mqtt") }
attr DEVICE icon ICON
attr DEVICE event-on-change-reading .*
attr DEVICE readingList BASE_ID/DEVNAME/status:.* { json2nameValue($EVENT) }\
  BASE_ID/DEVNAME/ip:.* { json2nameValue($EVENT) }
attr DEVICE setList Charge_ON:noArg BASE_ID/DEVNAME/cmd/req alw=1\
  Charge_OFF:noArg BASE_ID/DEVNAME/cmd/req alw=0\
  amp:selectnumbers,1,1,22,1,lin BASE_ID/DEVNAME/cmd/req alw=$EVTPART1
attr DEVICE stateFormat Status: charger_state P_akt: energy_akt V1: nrg_1 V2: nrg_2 V3: nrg_3
attr DEVICE userReadings charger_state:car.* { my $val = ReadingsVal($name,"car","none");; my %rets = ("none"  => "-1","1" => "Ready","2" => "Charging","3" => "waiting for car","4" => "Charging finished");; $rets{$val}}, temperature:temp.* { ReadingsVal($name,"tmp",0) }, energy_total:eto.* { ReadingsVal($name,"eto",0)*0.1 }, energy_akt:dws.* { ReadingsVal($name,"dws",0)*2.77 }
attr DEVICE model go_eCharger


Zum Testen findest du unter https://wiki.fhem.de/wiki/AttrTemplate#Eigene_Templates_entwickeln eine kurze Anleitung mit weiteren Links.

Grüße und viel Spaß damit!

EDIT: widget für amp geändert.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

blueberry63

#4
Ich habe das Template eingebunden, aber das Topic stimmt nicht:

Beispiel:
Mit Template (falsch): go-eCharger/go-eCharger/007353/status:.* { json2nameValue($EVENT) }
ohne Template (richtig): go-eCharger/007353/status:.* { json2nameValue($EVENT) }

Bei setlist ist die Zeile für "amp" falsch:
Falsch:   amp:selectnumbers,1,1,22,1,lin go-eCharger/007353/cmd/req alw=$EVTPART1
Richtig:   amp:selectnumbers,1,1,22,1,lin go-eCharger/007353/cmd/req amp=$EVTPART1

Mit den entsprechenden Korrekturen sieht es aber gut aus!!!

Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

Beta-User

Thx, habe die zwei Dinge (hoffentlich) noch repariert, das kommt dann ab morgen früh via update :) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

blueberry63

Hallo Beta-User,

wegen dem Mix der Readings durch das Kopieren des Gerätes habe ich etwas Wesentliches übersehen: das UserReading für "charge_state" funktioniert nicht, ich finde aber den Fehler nicht. Fakt ist, dass das Reading nicht angelegt wird:

charger_state:car.* { my $val = ReadingsVal($name,"car","none");; my %rets = ("none"  => "-1","1" => "Ready","2" => "Charging","3" => "waiting for car","4" => "Charging finished");; $rets{$val}},
temperature:[b]temp[/b].* { ReadingsVal($name,"tmp",0) }


Das Reading für die Temperatur hat auch noch einen Fehler: richtig ist "temperature:tmp.* { ReadingsVal($name,"tmp",0) }"

Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

Beta-User

Thx für die Info.

Hatte das von woanders geklaut und mit temp wohl nicht richtig hingesehen...

So sollte es klappen:
charger_state:car.* { my $val = ReadingsVal($name,"car","none");; my %rets = ("none"  => "-1","1" => "Ready","2" => "Charging","3" => "waiting for car","4" => "Charging finished",);; $rets{$val}}, temperature:tmp.* { ReadingsVal($name,"tmp",0) }, energy_total:eto.* { ReadingsVal($name,"eto",0)*0.1 }, energy_akt:dws.* { ReadingsVal($name,"dws",0)*2.77 }
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

blueberry63

"temperature" wird jetzt angelegt, aber "charge_state" noch nicht. Ich sehe aber auch keinen Unterschied zu vorher?
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

Beta-User

Na ja, ich hatte das erst mal (auch wg. tmp) geändert, dann an einem dummy-Device ausgetestet und dabei nochmal verändert (bzw. versucht, wieder auf das Minimum zu kommen). Am Dummy hat das funktioniert, wenn ich z.B. für car eine 1 oder 2 gesetzt habe...

Wird/wurde denn das Reading "car" bei dir aktualisiert?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

blueberry63

#10
Hallo Beta-User,

mein Fehler beim Testen: es funktioniert so, wie Du es "gecoded" hast.

Dafür hätte ich noch ein UserReading für das Sperren/Entsperren des Gerätes:

device_state:alw.* { my $val = ReadingsVal($name,"alw","none");; my %rets = ("none"  => "-1","0" => "Locked","1" => "Open",);; $rets{$val}},

"Setlist" müsste logischerweise etwa so aussehen, da das Sperren/Entsperren des Gerätes zunächst nichts mit dem Ladevorgang zu tun hat:


Device_OPEN:noArg go-eCharger/007353/cmd/req alw=1\
Device_LOCK:noArg go-eCharger/007353/cmd/req alw=0\
Ampere:selectnumbers,1,1,22,1,lin go-eCharger/007353/cmd/req amp=$EVTPART1


Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

Beta-User

Danke vorab für die Rückmeldung zu device_state.

Was alw angeht, neige ich (ohne das ausgetestet zu haben, daher vorläufig...) dazu, das über das reading abzuwickeln und den Zustand "nur" über ein Icon zu visualisieren:
setList-Eintrag:
alw:0,1 go-eCharger/007353/cmd/req alw=$EVTPART1\

stateFormat und devStateIcon:
attr DEVICE stateFormat Status: charger_state \
ALW:alw\
P_akt: energy_akt V1: nrg_1 V2: nrg_2 V3: nrg_3
attr DEVICE devStateIcon ALW.1:status_open:alw+0 ALW.0:status_locked:alw+1

Auch die Bezeichnung Ampere ist evtl. ungünstig, sollte tendenziell auch zu amp werden, oder wir setzen JSONMAP ein, dann können beide Readings "schönere" Namen bekommen?
(Einfaches Beispiel wäre in zigbee2mqtt_ContactSensor zu finden).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

blueberry63

attr DEVICE devStateIcon ALW.1:status_open:alw+0 ALW.0:status_locked:alw+1

Ich habe mal Deinen Vorschlag für devStateIcon ausprobiert, aber es funktioniert irgendwie nicht: wenn ich es richtig verstanden habe, sollte im Status ein wechselndes Icon - je nach dem Wert von "alw" - erscheinen. Bei mir wird aber nut "ALW: 1" angezeigt.

Ich habe es auch schon mit anderen Icons ausprobiert, aber ohne Erfolg.

Oder habe ich hier etwas falsch verstanden?

Gruß
Blueberry63

FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

Beta-User

Da ist entweder ein Leerzeichen zu viel oder je ein Punkt zu wenig.... ;)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

blueberry63

wenn das "stateFormat" nur "ALW alw" ist, dann funktioniert devStateIcon, aber sobald man mehrere Werte in "stateFormat" packt, dann wird kein Icon angezeigt.

Aber das ist ja auch irgendwie OT. Ich werde mal an andere Stelle in die Runde fragen, wie man mehrere Werte+Icons ins "stateFormat" bringt. Das kann ich für andere Geräte auch gebrauchen.

Gruß
Blueberry63   
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower