E-Auto Hyundai Bluelink / Bluelinky (Hilfe zu Node.js)

Begonnen von mnl1234, 26 November 2020, 08:50:37

Vorheriges Thema - Nächstes Thema

ch.eick

#105
Zitat von: xerion am 29 Oktober 2021, 13:02:36
Vielleicht wäre es noch gut der Vollständigkeitshalber auch noch das Aktuelle defmod des MQTT Device von FHEM zu posten, dann könnten Neulinge das direkt für den ersten Einsatz einrichten
Und schon geht es weiter :-)

Das wäre mit MQTT2.
Der Ursprung ist auch von @mnl1234

defmod MQTT2_FHEM_Server MQTT2_SERVER 1883 global
attr MQTT2_FHEM_Server DbLogExclude .*
attr MQTT2_FHEM_Server alias MQTT2_FHEM_Server
attr MQTT2_FHEM_Server autocreate simple
attr MQTT2_FHEM_Server disable 0
attr MQTT2_FHEM_Server room MQTT2
attr MQTT2_FHEM_Server verbose 1



defmod WB_1_Kia_eNiro MQTT2_DEVICE
attr WB_1_Kia_eNiro DbLogExclude .*
attr WB_1_Kia_eNiro IODev MQTT2_FHEM_Server
attr WB_1_Kia_eNiro alias WB_1_Kia_eNiro
attr WB_1_Kia_eNiro autocreate 1
attr WB_1_Kia_eNiro devicetopic bluelinky
attr WB_1_Kia_eNiro group PV Eigenverbrauch
attr WB_1_Kia_eNiro icon car
attr WB_1_Kia_eNiro readingList $DEVICETOPIC/status:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/location.* { json2nameValue($EVENT) }\
$DEVICETOPIC/odometer:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/req_received:.* req_received\
$DEVICETOPIC/req_active:.* req_active
attr WB_1_Kia_eNiro room MQTT2_DEVICE,Strom->Photovoltaik
attr WB_1_Kia_eNiro setList getOdometer req/$DEVICETOPIC/get_odometer get_odometer\
getStatus req/$DEVICETOPIC/get_status get_status\
getLocation req/$DEVICETOPIC/get_location get_location\
getAll req/$DEVICETOPIC/get_all get_all\
startCharge req/$DEVICETOPIC/start_charging start_charging\
stopCharge req/$DEVICETOPIC/stop_charging stop_charging\
stopClimate req/$DEVICETOPIC/stop_climate stop_climate\
startHeating req/$DEVICETOPIC/start_climate {"defrost": true, "windscreenHeating": true, "temperature": 22.0 , "unit": "C"}\
startCooling req/$DEVICETOPIC/start_climate {"defrost": false, "windscreenHeating": false, "temperature": 22.0 , "unit": "C"}
attr WB_1_Kia_eNiro sortby 312
attr WB_1_Kia_eNiro stateFormat {my $charge = (ReadingsVal($name,"charging","false") eq "true");;;;   my $athome = (ReadingsVal($name,"atHomeStanding","false") eq "true");;;;   my $chargeathome = ($charge && $athome);;;;   my $connectedathome = ($athome && ReadingsVal($name,"connected","false") eq "true");;;;   sprintf("   <table>   <tr>   <td style='text-align:right'>Status:</td>   <td style='text-align:left'>%s</td>   </tr>   <tr>   <td style='text-align:right'>Akku:</td>   <td style='text-align:left'>%s %%</td>   </tr>   <tr>   <td style='text-align:right'>Reichweite:</td>   <td style='text-align:left'>%s km</td>   </tr>   <tr style='%s'>   <td style='text-align:right'>Ladedauer:</td>   <td style='text-align:left'>%s h</td>   </tr>   <tr>   <td style='text-align:right'>Ladegrenze AC:</td>   <td style='text-align:left'>%s %%</td>   </tr>   <tr>   <td style='text-align:right'>Kilometerstand:</td>   <td style='text-align:left'>%d km</td>   </tr>   <tr>   <td style='text-align:right'>12V Batterie:</td>   <td style='text-align:left'>%s %%</td>   </tr>   <tr>   <td style='text-align:right'>Aktivstatus:</td>   <td style='text-align:left'>%s</td>   </tr>   <tr>   <td style='text-align:right'>Zeit:</td>   <td style='text-align:left'>%s</td>   </tr>   </table>   ",   ($chargeathome ? "läd zu Hause" : ($connectedathome ? "angeschlossen zu Hause" : ($athome ? "zu Hause" : ($charge ? "Läd auswärts" : "unterwegs")))),   ReadingsVal($name,"batSOC",""),   ReadingsVal($name,"range",""),   ($charge ? "" : "display:none;;"),   ReadingsVal($name,"time2targetSOC",""),   ReadingsVal($name,"targetSOC",""),   ReadingsVal($name,"odometer_value",""),   ReadingsVal($name,"bat12v",""),   ReadingsVal($name,"req_active",""),   ReadingsTimestamp($name,"status_time","")   )   }
attr WB_1_Kia_eNiro userReadings atHomeStanding:location.* { ((abs(AttrVal("global","latitude",49.85) - ReadingsVal($NAME,"location_coord_lat",0)) <= 0.001) && (abs(AttrVal("global","longitude",8.49) - ReadingsVal($NAME,"location_coord_lon",0)) <= 0.001) && (ReadingsVal($NAME,"location_speed_value",1) == 0)) ? 'true' : 'false';;;; },\
batSOC:status.* { ReadingsVal($NAME,"status_evStatus_batteryStatus",0);;;;},\
connected:status.* { (ReadingsVal($NAME,"status_evStatus_batteryPlugin",0) != 0) ? 'true' : 'false';;;;},\
charging:status.* { ReadingsVal($NAME,"status_evStatus_batteryCharge",'false');;;;},\
targetSOC:status.* { ReadingsVal($NAME,"status_evStatus_reservChargeInfos_targetSOClist_2_targetSOClevel",0);;;;},\
time2targetSOC:status.* { my $t = ReadingsVal($NAME,"status_evStatus_remainTime2_atc_value",1);;;; sprintf("%02d:%02d", $t/60%60, $t%60);;},\
range:status.* { ReadingsVal($NAME,"status_evStatus_drvDistance_1_rangeByFuel_totalAvailableRange_value",0);;;;},\
bat12v:status.* { ReadingsVal($NAME,"status_battery_batSoc",0);;;;},
attr WB_1_Kia_eNiro webCmd getAll:startCharge:stopCharge:startHeating:startCooling:stopClimate

setstate WB_1_Kia_eNiro    <table>   <tr>   <td style='text-align:right'>Status:</td>   <td style='text-align:left'>zu Hause</td>   </tr>   <tr>   <td style='text-align:right'>Akku:</td>   <td style='text-align:left'>88 %</td>   </tr>   <tr>   <td style='text-align:right'>Reichweite:</td>   <td style='text-align:left'>396 km</td>   </tr>   <tr style='display:none;;'>   <td style='text-align:right'>Ladedauer:</td>   <td style='text-align:left'>00:35 h</td>   </tr>   <tr>   <td style='text-align:right'>Ladegrenze AC:</td>   <td style='text-align:left'>100 %</td>   </tr>   <tr>   <td style='text-align:right'>Kilometerstand:</td>   <td style='text-align:left'>231 km</td>   </tr>   <tr>   <td style='text-align:right'>12V Batterie:</td>   <td style='text-align:left'>78 %</td>   </tr>   <tr>   <td style='text-align:right'>Aktivstatus:</td>   <td style='text-align:left'>idle</td>   </tr>   <tr>   <td style='text-align:right'>Zeit:</td>   <td style='text-align:left'>2021-10-29 12:31:03</td>   </tr>   </table>   


Wie bereits geschrieben sammle ich jetzt Erfahrungen und möchte das dann ins Wiki stellen.
Hast Du noch schöne DOIF steuerungs Beispiele?
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

xerion

Zitat von: ch.eick am 29 Oktober 2021, 13:12:52
Und schon geht es weiter :-)

Das wäre mit MQTT2.
Der Ursprung ist auch von @mnl1234

defmod WB_1_Kia_eNiro MQTT2_DEVICE
attr WB_1_Kia_eNiro DbLogExclude .*
attr WB_1_Kia_eNiro IODev MQTT2_FHEM_Server
attr WB_1_Kia_eNiro alias WB_1_Kia_eNiro
attr WB_1_Kia_eNiro autocreate 1
attr WB_1_Kia_eNiro devicetopic bluelinky
attr WB_1_Kia_eNiro group PV Eigenverbrauch
attr WB_1_Kia_eNiro icon car
attr WB_1_Kia_eNiro readingList $DEVICETOPIC/status:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/location.* { json2nameValue($EVENT) }\
$DEVICETOPIC/odometer:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/req_received:.* req_received\
$DEVICETOPIC/req_active:.* req_active
attr WB_1_Kia_eNiro room MQTT2_DEVICE,Strom->Photovoltaik
attr WB_1_Kia_eNiro setList getOdometer req/$DEVICETOPIC/get_odometer get_odometer\
getStatus req/$DEVICETOPIC/get_status get_status\
getLocation req/$DEVICETOPIC/get_location get_location\
getAll req/$DEVICETOPIC/get_all get_all\
startCharge req/$DEVICETOPIC/start_charging start_charging\
stopCharge req/$DEVICETOPIC/stop_charging stop_charging\
stopClimate req/$DEVICETOPIC/stop_climate stop_climate\
startHeating req/$DEVICETOPIC/start_climate {"defrost": true, "windscreenHeating": true, "temperature": 22.0 , "unit": "C"}\
startCooling req/$DEVICETOPIC/start_climate {"defrost": false, "windscreenHeating": false, "temperature": 22.0 , "unit": "C"}
attr WB_1_Kia_eNiro sortby 312
attr WB_1_Kia_eNiro stateFormat {my $charge = (ReadingsVal($name,"charging","false") eq "true");;;;   my $athome = (ReadingsVal($name,"atHomeStanding","false") eq "true");;;;   my $chargeathome = ($charge && $athome);;;;   my $connectedathome = ($athome && ReadingsVal($name,"connected","false") eq "true");;;;   sprintf("   <table>   <tr>   <td style='text-align:right'>Status:</td>   <td style='text-align:left'>%s</td>   </tr>   <tr>   <td style='text-align:right'>Akku:</td>   <td style='text-align:left'>%s %%</td>   </tr>   <tr>   <td style='text-align:right'>Reichweite:</td>   <td style='text-align:left'>%s km</td>   </tr>   <tr style='%s'>   <td style='text-align:right'>Ladedauer:</td>   <td style='text-align:left'>%s h</td>   </tr>   <tr>   <td style='text-align:right'>Ladegrenze AC:</td>   <td style='text-align:left'>%s %%</td>   </tr>   <tr>   <td style='text-align:right'>Kilometerstand:</td>   <td style='text-align:left'>%d km</td>   </tr>   <tr>   <td style='text-align:right'>12V Batterie:</td>   <td style='text-align:left'>%s %%</td>   </tr>   <tr>   <td style='text-align:right'>Aktivstatus:</td>   <td style='text-align:left'>%s</td>   </tr>   <tr>   <td style='text-align:right'>Zeit:</td>   <td style='text-align:left'>%s</td>   </tr>   </table>   ",   ($chargeathome ? "läd zu Hause" : ($connectedathome ? "angeschlossen zu Hause" : ($athome ? "zu Hause" : ($charge ? "Läd auswärts" : "unterwegs")))),   ReadingsVal($name,"batSOC",""),   ReadingsVal($name,"range",""),   ($charge ? "" : "display:none;;"),   ReadingsVal($name,"time2targetSOC",""),   ReadingsVal($name,"targetSOC",""),   ReadingsVal($name,"odometer_value",""),   ReadingsVal($name,"bat12v",""),   ReadingsVal($name,"req_active",""),   ReadingsTimestamp($name,"status_time","")   )   }
attr WB_1_Kia_eNiro userReadings atHomeStanding:location.* { ((abs(AttrVal("global","latitude",49.85) - ReadingsVal($NAME,"location_coord_lat",0)) <= 0.001) && (abs(AttrVal("global","longitude",8.49) - ReadingsVal($NAME,"location_coord_lon",0)) <= 0.001) && (ReadingsVal($NAME,"location_speed_value",1) == 0)) ? 'true' : 'false';;;; },\
batSOC:status.* { ReadingsVal($NAME,"status_evStatus_batteryStatus",0);;;;},\
connected:status.* { (ReadingsVal($NAME,"status_evStatus_batteryPlugin",0) != 0) ? 'true' : 'false';;;;},\
charging:status.* { ReadingsVal($NAME,"status_evStatus_batteryCharge",'false');;;;},\
targetSOC:status.* { ReadingsVal($NAME,"status_evStatus_reservChargeInfos_targetSOClist_2_targetSOClevel",0);;;;},\
time2targetSOC:status.* { my $t = ReadingsVal($NAME,"status_evStatus_remainTime2_atc_value",1);;;; sprintf("%02d:%02d", $t/60%60, $t%60);;},\
range:status.* { ReadingsVal($NAME,"status_evStatus_drvDistance_1_rangeByFuel_totalAvailableRange_value",0);;;;},\
bat12v:status.* { ReadingsVal($NAME,"status_battery_batSoc",0);;;;},
attr WB_1_Kia_eNiro webCmd getAll:startCharge:stopCharge:startHeating:startCooling:stopClimate

setstate WB_1_Kia_eNiro    <table>   <tr>   <td style='text-align:right'>Status:</td>   <td style='text-align:left'>zu Hause</td>   </tr>   <tr>   <td style='text-align:right'>Akku:</td>   <td style='text-align:left'>88 %</td>   </tr>   <tr>   <td style='text-align:right'>Reichweite:</td>   <td style='text-align:left'>396 km</td>   </tr>   <tr style='display:none;;'>   <td style='text-align:right'>Ladedauer:</td>   <td style='text-align:left'>00:35 h</td>   </tr>   <tr>   <td style='text-align:right'>Ladegrenze AC:</td>   <td style='text-align:left'>100 %</td>   </tr>   <tr>   <td style='text-align:right'>Kilometerstand:</td>   <td style='text-align:left'>231 km</td>   </tr>   <tr>   <td style='text-align:right'>12V Batterie:</td>   <td style='text-align:left'>78 %</td>   </tr>   <tr>   <td style='text-align:right'>Aktivstatus:</td>   <td style='text-align:left'>idle</td>   </tr>   <tr>   <td style='text-align:right'>Zeit:</td>   <td style='text-align:left'>2021-10-29 12:31:03</td>   </tr>   </table>   


Wie bereits geschrieben sammle ich jetzt Erfahrungen und möchte das dann ins Wiki stellen.
Hast Du noch schöne DOIF steuerungs Beispiele?

Ich nutze Bluelinky für folgende Anwendungszwecke:

-Auslesen des Kilometerstandes beim Verbinden der Wallbox über DOIF
-Timer und Temperatur gesteuerte Klimatisierung über FUIP und DOIF
-Google Maps Position per WEBLINK
-SoC lese ich per OBD2 aus da es mir mit Bluelinky zu unstabil war, und wenn man PV Optimiert Zielladen möchte ist das mit dieser API leider zu träge.

Falls dort Interesse besteht kann ich das zur Verfügung stellen.
Wechsel jetzt zu Octopus Energy und bekomme 150,00 € Bonus auf deine Rechnung. Die Anmeldung geht super leicht und schnell, klicke dafür einfach meinen persönlichen Empfehlungslink:
 https://share.octopusenergy.de/loved-heron-220.

ch.eick

#107
Zitat von: xerion am 29 Oktober 2021, 13:25:16
Ich nutze Bluelinky für folgende Anwendungszwecke:

-Auslesen des Kilometerstandes beim Verbinden der Wallbox über DOIF
-Timer und Temperatur gesteuerte Klimatisierung über FUIP und DOIF
-Google Maps Position per WEBLINK
-SoC lese ich per OBD2 aus da es mir mit Bluelinky zu unstabil war, und wenn man PV Optimiert Zielladen möchte ist das mit dieser API leider zu träge.

Falls dort Interesse besteht kann ich das zur Verfügung stellen.
Ja bitte, ich habe gerade begonnen und würde mir das auch gerne ansehen.

Das mit dem Zielladen wollte ich in der Theorie anders lösen.
-  mit dem Kia Connect kann ich den Ziel Soc vorgeben
    somit kümmert sich das Auto darum und stoppt einfach das Laden, wenn der SOC erreicht ist

Ich habe eine openWB , wo das auch experimentell gehen soll, wenn jedoch das Fahrzeug das machen kann, mache ich lieber im Endverbraucher.

EDIT:
Hier schon mal ein kleiner Anfang mit uiTable im DOIF für die Kia/Hunday Steuerung.
In den nächsten Zeilen/Spalten kommt dann der Status und eine eventuelle Möglichkeit diesen direkt zu ändern.

Im Screenshot sieht man bereits das erste Kommando zur Status Abfrage. Die Zeitsteuerung ist bereits im DOIF abgebildet und kann hier als Auswahl aus dem Pull Down nochmals manuell aufgerufen werden.
Wie in meinem Speicher Steuerungs Screenshot wird dann der Accu Stand auch grafisch dargestellt werden.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

xerion

Für den Timer nutze ich FUIP als grafische Oberfläche siehe Screenshot, das setzt dann einfach einen Timer im  "WeekdayTimer" Modul. Da ich beim Timer die Abfahrtzeit eingeben möchte nehme ich zeit und Datum als getrenntes Reading.
defmod TimerBluelink WeekdayTimer de de 12345|07:40|on
attr TimerBluelink alias TimerBluelink
attr TimerBluelink commandTemplate set $NAME  $EVENT
attr TimerBluelink disable 0
attr TimerBluelink room Auto
attr TimerBluelink userReadings Date {(substr(ReadingsVal("TimerBluelink","nextUpdate",""),0,10))},\
Time {(substr(ReadingsVal("TimerBluelink","nextUpdate",""),11,8))}


Der WeekdayTimer steuert dann ein DOIF welches die Readings Date und Time asuwertet:
defmod di_WeekdaytTimerBluelink DOIF ([([TimerBluelink:Time]-[00:15:00])] and $ymd eq [TimerBluelink:Date] and [TimerBluelink:disabled] eq 0)\
(set du_bluelink on-for-timer 1200 )\
DOELSE\

attr di_WeekdaytTimerBluelink alias di_WeekdaytTimerBluelink
attr di_WeekdaytTimerBluelink event-on-change-reading .*
attr di_WeekdaytTimerBluelink room Auto







Wechsel jetzt zu Octopus Energy und bekomme 150,00 € Bonus auf deine Rechnung. Die Anmeldung geht super leicht und schnell, klicke dafür einfach meinen persönlichen Empfehlungslink:
 https://share.octopusenergy.de/loved-heron-220.

xerion

Damit ich die Temperatur per Slider einstellen kann und unterscheiden kann ob mit oder ohne defrost habe ich das noch definiert:
startTemp:slider,17,1,27 /bluelink/start_car {"defrost": false,"windscreenHeating": false,"temperature": "$EVTPART1","unit": "C"}
startTemp_with_Defrost:slider,17,1,27 /bluelink/start_car_with_Defrost {"defrost": true,"windscreenHeating": true,"temperature": "$EVTPART1","unit": "C"}


Um die GPS Position in Google Maps anzeigen zu lassen nutze ich weblink:
defmod rr_Kona_map weblink htmlCode {\
'<ul style="width: 400px;; overflow: hidden;; height: 300px;;">\
<iframe name="rr_Kona_map" src="https://www.google.com/maps/embed/v1/place?key=xxxxxxxxxxxxxxxxxxxxxxx='\
.ReadingsVal('Bluelink','latitude','')\
.','\
.ReadingsVal('Bluelink','longitude','')\
.'&zoom=13" width="480" height="480" frameborder="0" style="border:0;; margin-top: -165px;; margin-left: -135px;;">\
</iframe>\
</ul>'\
}
attr rr_Kona_map alias Current Location
attr rr_Kona_map comment Auto-created by ROOMMATE module
attr rr_Kona_map group Kona
attr rr_Kona_map room Anwesenheit,Auto


Ich meinte das man dafür einen API Key bei Google Maps erzeugen musste, finde den Beitrag aber gerade nicht wieder.
Wechsel jetzt zu Octopus Energy und bekomme 150,00 € Bonus auf deine Rechnung. Die Anmeldung geht super leicht und schnell, klicke dafür einfach meinen persönlichen Empfehlungslink:
 https://share.octopusenergy.de/loved-heron-220.

ch.eick

Zitat von: xerion am 29 Oktober 2021, 15:46:40
Für den Timer nutze ich FUIP als grafische Oberfläche siehe Screenshot, das setzt dann einfach einen Timer im  "WeekdayTimer" Modul. Da ich beim Timer die Abfahrtzeit eingeben möchte nehme ich zeit und Datum als getrenntes Reading.

Der WeekdayTimer steuert dann ein DOIF welches die Readings Date und Time asuwertet:
Das ist auch sehr schön und man kann es ja parralel nutzen. Momentan bin ich nur an der Basis im FHEMWEB, da ja eigentlich alles automatischen laufen soll.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

michisa86888

Zitat von: ch.eick am 29 Oktober 2021, 13:12:52
Und schon geht es weiter :-)

Das wäre mit MQTT2.
Der Ursprung ist auch von @mnl1234

defmod MQTT2_FHEM_Server MQTT2_SERVER 1883 global
attr MQTT2_FHEM_Server DbLogExclude .*
attr MQTT2_FHEM_Server alias MQTT2_FHEM_Server
attr MQTT2_FHEM_Server autocreate simple
attr MQTT2_FHEM_Server disable 0
attr MQTT2_FHEM_Server room MQTT2
attr MQTT2_FHEM_Server verbose 1



defmod WB_1_Kia_eNiro MQTT2_DEVICE
attr WB_1_Kia_eNiro DbLogExclude .*
attr WB_1_Kia_eNiro IODev MQTT2_FHEM_Server
attr WB_1_Kia_eNiro alias WB_1_Kia_eNiro
attr WB_1_Kia_eNiro autocreate 1
attr WB_1_Kia_eNiro devicetopic bluelinky
attr WB_1_Kia_eNiro group PV Eigenverbrauch
attr WB_1_Kia_eNiro icon car
attr WB_1_Kia_eNiro readingList $DEVICETOPIC/status:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/location.* { json2nameValue($EVENT) }\
$DEVICETOPIC/odometer:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/req_received:.* req_received\
$DEVICETOPIC/req_active:.* req_active
attr WB_1_Kia_eNiro room MQTT2_DEVICE,Strom->Photovoltaik
attr WB_1_Kia_eNiro setList getOdometer req/$DEVICETOPIC/get_odometer get_odometer\
getStatus req/$DEVICETOPIC/get_status get_status\
getLocation req/$DEVICETOPIC/get_location get_location\
getAll req/$DEVICETOPIC/get_all get_all\
startCharge req/$DEVICETOPIC/start_charging start_charging\
stopCharge req/$DEVICETOPIC/stop_charging stop_charging\
stopClimate req/$DEVICETOPIC/stop_climate stop_climate\
startHeating req/$DEVICETOPIC/start_climate {"defrost": true, "windscreenHeating": true, "temperature": 22.0 , "unit": "C"}\
startCooling req/$DEVICETOPIC/start_climate {"defrost": false, "windscreenHeating": false, "temperature": 22.0 , "unit": "C"}
attr WB_1_Kia_eNiro sortby 312
attr WB_1_Kia_eNiro stateFormat {my $charge = (ReadingsVal($name,"charging","false") eq "true");;;;   my $athome = (ReadingsVal($name,"atHomeStanding","false") eq "true");;;;   my $chargeathome = ($charge && $athome);;;;   my $connectedathome = ($athome && ReadingsVal($name,"connected","false") eq "true");;;;   sprintf("   <table>   <tr>   <td style='text-align:right'>Status:</td>   <td style='text-align:left'>%s</td>   </tr>   <tr>   <td style='text-align:right'>Akku:</td>   <td style='text-align:left'>%s %%</td>   </tr>   <tr>   <td style='text-align:right'>Reichweite:</td>   <td style='text-align:left'>%s km</td>   </tr>   <tr style='%s'>   <td style='text-align:right'>Ladedauer:</td>   <td style='text-align:left'>%s h</td>   </tr>   <tr>   <td style='text-align:right'>Ladegrenze AC:</td>   <td style='text-align:left'>%s %%</td>   </tr>   <tr>   <td style='text-align:right'>Kilometerstand:</td>   <td style='text-align:left'>%d km</td>   </tr>   <tr>   <td style='text-align:right'>12V Batterie:</td>   <td style='text-align:left'>%s %%</td>   </tr>   <tr>   <td style='text-align:right'>Aktivstatus:</td>   <td style='text-align:left'>%s</td>   </tr>   <tr>   <td style='text-align:right'>Zeit:</td>   <td style='text-align:left'>%s</td>   </tr>   </table>   ",   ($chargeathome ? "läd zu Hause" : ($connectedathome ? "angeschlossen zu Hause" : ($athome ? "zu Hause" : ($charge ? "Läd auswärts" : "unterwegs")))),   ReadingsVal($name,"batSOC",""),   ReadingsVal($name,"range",""),   ($charge ? "" : "display:none;;"),   ReadingsVal($name,"time2targetSOC",""),   ReadingsVal($name,"targetSOC",""),   ReadingsVal($name,"odometer_value",""),   ReadingsVal($name,"bat12v",""),   ReadingsVal($name,"req_active",""),   ReadingsTimestamp($name,"status_time","")   )   }
attr WB_1_Kia_eNiro userReadings atHomeStanding:location.* { ((abs(AttrVal("global","latitude",49.85) - ReadingsVal($NAME,"location_coord_lat",0)) <= 0.001) && (abs(AttrVal("global","longitude",8.49) - ReadingsVal($NAME,"location_coord_lon",0)) <= 0.001) && (ReadingsVal($NAME,"location_speed_value",1) == 0)) ? 'true' : 'false';;;; },\
batSOC:status.* { ReadingsVal($NAME,"status_evStatus_batteryStatus",0);;;;},\
connected:status.* { (ReadingsVal($NAME,"status_evStatus_batteryPlugin",0) != 0) ? 'true' : 'false';;;;},\
charging:status.* { ReadingsVal($NAME,"status_evStatus_batteryCharge",'false');;;;},\
targetSOC:status.* { ReadingsVal($NAME,"status_evStatus_reservChargeInfos_targetSOClist_2_targetSOClevel",0);;;;},\
time2targetSOC:status.* { my $t = ReadingsVal($NAME,"status_evStatus_remainTime2_atc_value",1);;;; sprintf("%02d:%02d", $t/60%60, $t%60);;},\
range:status.* { ReadingsVal($NAME,"status_evStatus_drvDistance_1_rangeByFuel_totalAvailableRange_value",0);;;;},\
bat12v:status.* { ReadingsVal($NAME,"status_battery_batSoc",0);;;;},
attr WB_1_Kia_eNiro webCmd getAll:startCharge:stopCharge:startHeating:startCooling:stopClimate

setstate WB_1_Kia_eNiro    <table>   <tr>   <td style='text-align:right'>Status:</td>   <td style='text-align:left'>zu Hause</td>   </tr>   <tr>   <td style='text-align:right'>Akku:</td>   <td style='text-align:left'>88 %</td>   </tr>   <tr>   <td style='text-align:right'>Reichweite:</td>   <td style='text-align:left'>396 km</td>   </tr>   <tr style='display:none;;'>   <td style='text-align:right'>Ladedauer:</td>   <td style='text-align:left'>00:35 h</td>   </tr>   <tr>   <td style='text-align:right'>Ladegrenze AC:</td>   <td style='text-align:left'>100 %</td>   </tr>   <tr>   <td style='text-align:right'>Kilometerstand:</td>   <td style='text-align:left'>231 km</td>   </tr>   <tr>   <td style='text-align:right'>12V Batterie:</td>   <td style='text-align:left'>78 %</td>   </tr>   <tr>   <td style='text-align:right'>Aktivstatus:</td>   <td style='text-align:left'>idle</td>   </tr>   <tr>   <td style='text-align:right'>Zeit:</td>   <td style='text-align:left'>2021-10-29 12:31:03</td>   </tr>   </table>   


Wie bereits geschrieben sammle ich jetzt Erfahrungen und möchte das dann ins Wiki stellen.
Hast Du noch schöne DOIF steuerungs Beispiele?

Vielen Dank erst einmal.
Bekomme beim einfügen der readinglist folgender Fehler

WB_1_Kia_eNiro: bad reading name {json2nameValue($EVENT) }\ (contains not A-Za-z/\d_\.- or is too long)



xerion

Zitat von: michisa86888 am 30 Oktober 2021, 09:22:09
Vielen Dank erst einmal.
Bekomme beim einfügen der readinglist folgender Fehler

WB_1_Kia_eNiro: bad reading name {json2nameValue($EVENT) }\ (contains not A-Za-z/\d_\.- or is too long)


Ich gehe davon aus dass du es nicht über Raw Definition import hast denn dort werden die "/" automatisch entfernt. Wenn du es händisch einfügst musst du es richtig formatieren.
Wechsel jetzt zu Octopus Energy und bekomme 150,00 € Bonus auf deine Rechnung. Die Anmeldung geht super leicht und schnell, klicke dafür einfach meinen persönlichen Empfehlungslink:
 https://share.octopusenergy.de/loved-heron-220.

ch.eick

#113
Zitat von: xerion am 29 Oktober 2021, 13:25:16
Ich nutze Bluelinky für folgende Anwendungszwecke:

-Auslesen des Kilometerstandes beim Verbinden der Wallbox über DOIF
Okay, das wird automatisch jede Stunde aktualisiert, wenn das Fahrzeug nicht zuhause ist und alle 15 Minuten, wenn es geladen wird.
Sollte die 12V Batterie unter 40% Ladezustand haben wird diese Abfrage gestoppt, dann wird man ja eh längere zeit nicht gefahren sein.

Zitat
-Timer und Temperatur gesteuerte Klimatisierung über FUIP und DOIF

Damit ich die Temperatur per Slider einstellen kann und unterscheiden kann ob mit oder ohne defrost habe ich das noch definiert:

startTemp:slider,17,1,27 /bluelink/start_car {"defrost": false,"windscreenHeating": false,"temperature": "$EVTPART1","unit": "C"}
startTemp_with_Defrost:slider,17,1,27 /bluelink/start_car_with_Defrost {"defrost": true,"windscreenHeating": true,"temperature": "$EVTPART1","unit": "C"}

Das versuche ich dann auch ins FHEMWEG uiTable zu bringen.

Zitat
-Google Maps Position per WEBLINK
Das hast Du ja in einer readingGroup abgebildet und wäre somit unabhängig. Das stelle ich dann mal bei mir zurück.

Zitat
-SoC lese ich per OBD2 aus da es mir mit Bluelinky zu unstabil war, und wenn man PV Optimiert Zielladen möchte ist das mit dieser API leider zu träge.
Hier habe ich im openWB Forum noch etwas angefragt.
Eigentlich kann man über das Kia Connect einen Ziel SOC vorgeben, was diese Steuerung ins Auto verlagern würde. Damit muss man nicht dauernd den SOC abfragen und könnte einfach der WB sagen, sie soll nur PV-Leistung verwenden. Sobald das Auto den SOC erreicht hat würde es selber aufhören zu laden.
Bei weniger intelligenten WBs muss man sich dann nur noch mit der Ladeleistung beschäftigen, was hier nicht rein gehören würde.

Momentan platziere ich gerade die Status Informationen  im uiTable

Durch @mnl1234 ist ja bereits folgende SetList bereitgestellt worden

getOdometer req/$DEVICETOPIC/get_odometer get_odometer
getStatus req/$DEVICETOPIC/get_status get_status
getLocation req/$DEVICETOPIC/get_location get_location
getAll req/$DEVICETOPIC/get_all get_all
startCharge req/$DEVICETOPIC/start_charging start_charging
stopCharge req/$DEVICETOPIC/stop_charging stop_charging
stopClimate req/$DEVICETOPIC/stop_climate stop_climate
startHeating req/$DEVICETOPIC/start_climate {"defrost": true, "windscreenHeating": true, "temperature": 22.0 , "unit": "C"}
startCooling req/$DEVICETOPIC/start_climate {"defrost": false, "windscreenHeating": false, "temperature": 22.0 , "unit": "C"}


@mnl1234 ich habe noch das problem, dass das set_chargetargets im node-red Flow noch nicht so richtig funktioniert

FHEM:
setChargeTargetSoc req/$DEVICETOPIC/set_chargetargets {"fast": 80, "slow": 50}

node-red:
Ich habe von ein json Object in den Flow eingebaut und das debugging aktiviert.

31.10.2021, 10:50:21node: 33b1bc85.662694
req/bluelinky/set_chargetargets : msg.payload : Object
{ fast: 80, slow: 50 }
31.10.2021, 10:50:34node: 811aa567.e89f98
msg.payload : undefined                                       <<<<<<<<<<<< kannst Du mir da noch helfen?
undefined
31.10.2021, 10:50:34node: fecad185.324f8
msg.payload : string[4]
"idle"
31.10.2021, 10:58:00node: fecad185.324f8
req/bluelinky/get_all : msg.payload : string[7]
"pending"
31.10.2021, 10:58:23node: fecad185.324f8
msg.payload : string[4]
"idle"


Sollte ich generell noch etwas vergessen haben, so schickt mir bitte nochmal Eure Wünsche.

VG
  Christian

EDIT: Der zweite screenshot ist nur ein Draft, aber es geht voran.
Die Batteriestände werden farbig angezeigt.
Beim zweiten Pull Down Menü kann man jetzt die Klimatisierung steuern und mit einer select Liste die Temperatur vorwählen.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

xerion

Zitat von: ch.eick am 31 Oktober 2021, 11:07:46
[/code]

@mnl1234 ich habe noch das problem, dass das set_chargetargets im node-red Flow noch nicht so richtig funktioniert

FHEM:
setChargeTargetSoc req/$DEVICETOPIC/set_chargetargets {"fast": 80, "slow": 50}

node-red:
Ich habe von ein json Object in den Flow eingebaut und das debugging aktiviert.

31.10.2021, 10:50:21node: 33b1bc85.662694
req/bluelinky/set_chargetargets : msg.payload : Object
{ fast: 80, slow: 50 }
31.10.2021, 10:50:34node: 811aa567.e89f98
msg.payload : undefined                                       <<<<<<<<<<<< kannst Du mir da noch helfen?
undefined
31.10.2021, 10:50:34node: fecad185.324f8
msg.payload : string[4]
"idle"
31.10.2021, 10:58:00node: fecad185.324f8
req/bluelinky/get_all : msg.payload : string[7]
"pending"
31.10.2021, 10:58:23node: fecad185.324f8
msg.payload : string[4]
"idle"


Es sieht so aus als ob das JSON Objekt falsch formatiert ist, so funktioniert es:
{
    "fast": 100,
    "slow": 80
}


Wechsel jetzt zu Octopus Energy und bekomme 150,00 € Bonus auf deine Rechnung. Die Anmeldung geht super leicht und schnell, klicke dafür einfach meinen persönlichen Empfehlungslink:
 https://share.octopusenergy.de/loved-heron-220.

ch.eick

Zitat von: xerion am 01 November 2021, 14:23:58
Es sieht so aus als ob das JSON Objekt falsch formatiert ist, so funktioniert es:
{
    "fast": 100,
    "slow": 80
}

Ja Danke, stimmt. Ich habe es jetzt auch bereits am laufen und noch einige Änderungen im node-red Flow.
Nach dem Test gebe ich bescheid.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Zitat von: xerion am 29 Oktober 2021, 15:56:47
Damit ich die Temperatur per Slider einstellen kann und unterscheiden kann ob mit oder ohne defrost habe ich das noch definiert:
startTemp:slider,17,1,27 /bluelink/start_car {"defrost": false,"windscreenHeating": false,"temperature": "$EVTPART1","unit": "C"}
startTemp_with_Defrost:slider,17,1,27 /bluelink/start_car_with_Defrost {"defrost": true,"windscreenHeating": true,"temperature": "$EVTPART1","unit": "C"}

Bei welchem Attribut hast Du das denn eingebaut?
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

xerion

Zitat von: ch.eick am 01 November 2021, 16:05:22
Bei welchem Attribut hast Du das denn eingebaut?
Das kommt unter setList rein.....
Wechsel jetzt zu Octopus Energy und bekomme 150,00 € Bonus auf deine Rechnung. Die Anmeldung geht super leicht und schnell, klicke dafür einfach meinen persönlichen Empfehlungslink:
 https://share.octopusenergy.de/loved-heron-220.

ch.eick

#118
Hallo zusammen,
wie würde Euch dieses uiTable gefallen?
- Die ausführbaren Komandos befinden sich in den Pull Down Menüs.
- Variable Werte können aus select Listen gesetzt werden.
- Der kommunikations Status wird mit "idel" in grün oder "pending" in rot angegeben
- Der Status ist in der rechten Spalte

- In der Zeile Komfort wollte ich noch das Abschließen des Fahrzeuges abbilden und eine Warnung für den Reifendruck.

- Beim Accu fehlen noch die Ladezeiten, bis zum SOC

- Bei der Klimatisierung wäre dann noch die Lenkrad Heizung und die heizbare Heckscheibe, sowie die Zeiteinstellung für die Klimatisierung.

Habt Ihr noch Ideen, was fehlen würde, oder Vorschläge für eine andere Anordnung?

VG
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

xerion

Ich denke das sieht doch für den Anfang sehr gut aus. Ideen und Wünsche kommen bestimmt noch wenn man es im Einsatz hat ;-)
Wechsel jetzt zu Octopus Energy und bekomme 150,00 € Bonus auf deine Rechnung. Die Anmeldung geht super leicht und schnell, klicke dafür einfach meinen persönlichen Empfehlungslink:
 https://share.octopusenergy.de/loved-heron-220.