chargemode per MQTT ändern in openWb 2.0

Fragen zur Nutzung, Features, usw..
Antworten
suggarman
Beiträge: 411
Registriert: Di Feb 25, 2020 7:03 am

chargemode per MQTT ändern in openWb 2.0

Beitrag von suggarman »

Hallo,
ich steuere die openWB auch über openhab.
Es klappt problemlos den Ladestrom, die Ladeleistung und den SoC des Autos per MQTT auszulesen.

Unter 1.9 ging die Änderung das Lademodus so:

if (Lademodus_owb.state==0) { sendHttpGetRequest("http://192.168.1.152/openWB/web/api.php ... s="+"jetzt") }
if (Lademodus_owb.state==1) { sendHttpGetRequest("http://192.168.1.152/openWB/web/api.php ... +"minundpv") }
if (Lademodus_owb.state==2) { sendHttpGetRequest("http://192.168.1.152/openWB/web/api.php ... uberschuss") }
if (Lademodus_owb.state==3) { sendHttpGetRequest("http://192.168.1.152/openWB/web/api.php ... us="+"stop") }

Wie geht das unter 2.0?

Danke und Grüße
Stefan
Tesla Model Y, VW E-Up, 2x openWB, Solaredge-PV 15,5 kWp ONO, BYD LVS 32 kWh und 3-phasige Victron Multiplus-II 5000 mit Victron DC-PV 7,2 kWp NNW, Daikin Wärmepumpe.
svenrill
Beiträge: 31
Registriert: Do Nov 26, 2020 6:47 pm

Re: chargemode per MQTT ändern in openWb 2.0

Beitrag von svenrill »

Hallo Stefan,

ich nutze MQTT zum Auslesen und Setzen in openHAB, d.h. einen MQTT-Channel mit den entsprechenden topics.
Zum Beispiel für den Lademodus basierend auf dem Ladeprofil des Fahrzeuges (die 1 steht für den Index des Profils, Standard-Profil sollte 0 sein):

MQTT State Topic: openWB/vehicle/template/charge_template/1
MQTT Command Topic: openWB/set/vehicle/template/charge_template/1/chargemode/selected

Den State parse ich bei "Incoming Value Transformations" mit "JSONPATH:$.chargemode.selected".
Der Command erwartet "instant_charging", "pv_charging" oder "stop".

Damit kannst Du das Item des Channels direkt ansprechen und den entsprechenden Wert setzen oder auslesen, z.B. mit sendCommand() oder über die sitemap in der App.

Ich weiß nicht, ob es eine Doku der MQTT set-Befehle gibt. Wenn Du z.B. mit MQTT-Explorer die topics beobachtest und in der Webanwendung die Einstellung änderst, tauchen kurz die MQTT-Befehle auf. Im MQTT.log von openWB 2 müssten sie auch zu finden sein.

set für die Begrenzung des Sofort-Lademodus wäre z.B.:
openWB/set/vehicle/template/charge_template/1/chargemode/instant_charging/limit/selected

Viele Grüße
Sven
Zuletzt geändert von svenrill am Mi Mär 15, 2023 11:46 am, insgesamt 1-mal geändert.
openWB Pro, PV-Anlage, Plenticore, Speicher BYD
suggarman
Beiträge: 411
Registriert: Di Feb 25, 2020 7:03 am

Re: chargemode per MQTT ändern in openWb 2.0

Beitrag von suggarman »

Hallo Sven,

vielen Dank für deine sehr ausführliche Antwort. Seit deinem post habe ich schon einige Stunden vergeblich probiert :(

things:
Type string : chargemodestringread "chargemodestringread" [stateTopic="openWB/vehicle/template/charge_template/0"] // funktioniert

Type string : chargemodestringewrite "chargemodestringwrite" commandTopic="openWB/vehicle/template/charge_template/0/chargemode/selected"] // geht NICHT


items:
String Lademodus_mqtt_owb "[JSONPATH($.chargemode.selected):%s ]" (AutoSolar) { channel="mqtt:topic:openwb:chargemodestringread" }
String Lademodus_Sendebefehl_mqtt { channel="mqtt:topic:openwb:chargemodestringewrite" }


rule:
postUpdate(Lademodus_Sendebefehl_mqtt,"instant_charging")

Hast du eine Idee, wo es hängt?
Es gibt keinen Fehler aber der Lademode wird nicht geändert.

Danke und Grüße
Stefan
Tesla Model Y, VW E-Up, 2x openWB, Solaredge-PV 15,5 kWp ONO, BYD LVS 32 kWh und 3-phasige Victron Multiplus-II 5000 mit Victron DC-PV 7,2 kWp NNW, Daikin Wärmepumpe.
svenrill
Beiträge: 31
Registriert: Do Nov 26, 2020 6:47 pm

Re: chargemode per MQTT ändern in openWb 2.0

Beitrag von svenrill »

Hallo Stefan,

ich glaube mein postUpdate()-Hinweis ist Schuld.
Probier es mit sendCommand(). Ich habe es nachgestellt, aber etwas vereinfacht. Du brauchst eigentlich nur einen Channel in dem MQTT-Thing. Bei mir sieht das als Code so aus:

Code: Alles auswählen

- id: testChargeMode
   channelTypeUID: mqtt:string
   label: test chargemode
   description: ""
   configuration:
     commandTopic: openWB/set/vehicle/template/charge_template/0/chargemode/selected
     stateTopic: openWB/vehicle/template/charge_template/0
Für diesen Channel ein Item Lademodus_mqtt_owb anlegen, welches die JSONPATH-Transformation ($.chargemode.selected) macht.

Dann ändert sendCommand(Lademodus_mqtt_owb, "instant_charging") bei mir die Einstellung in openWB.

Viele Grüße
Sven
openWB Pro, PV-Anlage, Plenticore, Speicher BYD
suggarman
Beiträge: 411
Registriert: Di Feb 25, 2020 7:03 am

Re: chargemode per MQTT ändern in openWb 2.0

Beitrag von suggarman »

Mit sendCommand geht es tatsächlich genau so, wie ich es habe :lol:

Danke für deine Hilfe.
Tesla Model Y, VW E-Up, 2x openWB, Solaredge-PV 15,5 kWp ONO, BYD LVS 32 kWh und 3-phasige Victron Multiplus-II 5000 mit Victron DC-PV 7,2 kWp NNW, Daikin Wärmepumpe.
suggarman
Beiträge: 411
Registriert: Di Feb 25, 2020 7:03 am

Re: chargemode per MQTT ändern in openWb 2.0

Beitrag von suggarman »

Ich stelle fest, dass MQTT, JASONPATH und ich nicht wirklich Freunde sind :lol:

Falls noch jemand mit der Integration der openWB2 in openhab kämpft, stelle ich hier ein paar Codeschnipsel rein:

Things:
Bridge mqtt:broker:openwbbroker "OpenWBBroker" [ host="192.168.1.173", secure=false, clientID="openhabian",port=1883, username="",password=""]

Thing mqtt:topic:openwb "OpenWB" (mqtt:broker:openwbbroker) {

Channels:
Type number : ladeleistung "Ladeleistung" [stateTopic="openWB/lp/1/W",unit="W"]
Type number : ladestrom "Ladestrom" [stateTopic="openWB/lp/1/APhase1",unit="A"]
Type number : teslasoc "Tesla SoC" [stateTopic="openWB/vehicle/2/get/soc",unit="%"]
Type number : plugstate "plugstate" [stateTopic="openWB/lp/1/boolPlugStat",unit=""]
Type string : chargemode "chargemode" [ stateTopic="openWB/vehicle/template/charge_template/0", commandTopic="openWB/set/vehicle/template/charge_template/0/chargemode/selected"]
Type string : pvmincurrent "pvmincurrent" [ stateTopic="openWB/vehicle/template/charge_template/0", commandTopic="openWB/set/vehicle/template/charge_template/0/chargemode/pv_charging/min_current"]
Type string : sofortcurrent "sofortcurrent" [ stateTopic="openWB/vehicle/template/charge_template/0", commandTopic="openWB/set/vehicle/template/charge_template/0/chargemode/instant_charging/current"]

Items:
String Lademodus_mqtt_owb "[JSONPATH($.chargemode.selected):%s ]" { channel="mqtt:topic:openwb:chargemode" }
String Lademodus_Sendebefehl_mqtt { channel="mqtt:topic:openwb:chargemode" }
Number Lademodus_owb "Lademodus openWB [%.0f]" // [MAP(pvev.map):%s]
Number Ladestrom_owb "aktueller Ladestrom (A) : [%s]" { channel="mqtt:topic:openwb:ladestrom" } //http:url:openWB152_thing:lla1" }
Number Ladeleistung_owb "Ladeleistung [%.0f W]" { channel="mqtt:topic:openwb:ladeleistung" } //http:url:openWB152_thing:mqttladeleistunglp1" }
Number Ladestecker_owb "Status Ladestecker [%s]" { channel="mqtt:topic:openwb:plugstate" } //http:url:openWB152_thing:SteckerLP1" }
String pvmincurrent "[JSONPATH($.chargemode.pv_charging.min_current):%s ]" { channel="mqtt:topic:openwb:pvmincurrent" } // (AutoSolar)
String sofortcurrent "[JSONPATH($.chargemode.instant_charging.current):%s ]" { channel="mqtt:topic:openwb:sofortcurrent" } // (AutoSolar)
String pvmincurrent_Sendebefehl { channel="mqtt:topic:openwb:pvmincurrent" }
Number LadestromPVmin
String sofortcurrent_Sendebefehl { channel="mqtt:topic:openwb:sofortcurrent" }
Number Ladestrom_sofort // (AutoSolar)
Number Tesla_SOC "Tesla SoC [%s]" { channel="mqtt:topic:openwb:teslasoc"} //"http:url:openWB152_thing:soc" }

Rules:

rule "openWB 2.0 Lademodus setzen"
when
Item Lademodus_owb received update
then
if (Lademodus_owb.state==0) {
sendCommand(Lademodus_Sendebefehl_mqtt,"instant_charging")
sendCommand(Echo_TTS,"Lademodus sofort") }
if (Lademodus_owb.state==1) {
sendCommand(Lademodus_Sendebefehl_mqtt,"pv_charging")
sendCommand(Echo_TTS,"Lademodus PV Minimum ")
sendCommand(pvmincurrent_Sendebefehl,"6")}
if (Lademodus_owb.state==2) {
sendCommand(Lademodus_Sendebefehl_mqtt,"pv_charging")
sendCommand(Echo_TTS,"Lademodus PV")
sendCommand(pvmincurrent_Sendebefehl,"0") }
if (Lademodus_owb.state==3) {
sendCommand(Lademodus_Sendebefehl_mqtt,"stop")
sendCommand(Echo_TTS,"Lademodus stop")}
end




rule "Ladestrom PV min setzen"
when
Item LadestromPVmin received update
then
if (LadestromPVmin.state==6) {sendCommand(pvmincurrent_Sendebefehl,"6")}
if (LadestromPVmin.state==7) {sendCommand(pvmincurrent_Sendebefehl,"7")}
if (LadestromPVmin.state==8) {sendCommand(pvmincurrent_Sendebefehl,"8")}
if (LadestromPVmin.state==9) {sendCommand(pvmincurrent_Sendebefehl,"9")}
if (LadestromPVmin.state==10) {sendCommand(pvmincurrent_Sendebefehl,"10")}
if (LadestromPVmin.state==11) {sendCommand(pvmincurrent_Sendebefehl,"11")}
if (LadestromPVmin.state==12) {sendCommand(pvmincurrent_Sendebefehl,"12")}
if (LadestromPVmin.state==13) {sendCommand(pvmincurrent_Sendebefehl,"13")}
if (LadestromPVmin.state==14) {sendCommand(pvmincurrent_Sendebefehl,"14")}
if (LadestromPVmin.state==15) {sendCommand(pvmincurrent_Sendebefehl,"15")}
if (LadestromPVmin.state==16) {sendCommand(pvmincurrent_Sendebefehl,"16")}
end



rule "Ladestrom sofort setzen"
when
Item Ladestrom_sofort received update
then
if (Ladestrom_sofort.state==6) {sendCommand(sofortcurrent_Sendebefehl,"6")}
if (Ladestrom_sofort.state==7) {sendCommand(sofortcurrent_Sendebefehl,"7")}
if (Ladestrom_sofort.state==8) {sendCommand(sofortcurrent_Sendebefehl,"8")}
if (Ladestrom_sofort.state==9) {sendCommand(sofortcurrent_Sendebefehl,"9")}
if (Ladestrom_sofort.state==10) {sendCommand(sofortcurrent_Sendebefehl,"10")}
if (Ladestrom_sofort.state==11) {sendCommand(sofortcurrent_Sendebefehl,"11")}
if (Ladestrom_sofort.state==12) {sendCommand(sofortcurrent_Sendebefehl,"12")}
if (Ladestrom_sofort.state==13) {sendCommand(sofortcurrent_Sendebefehl,"13")}
if (Ladestrom_sofort.state==14) {sendCommand(sofortcurrent_Sendebefehl,"14")}
if (Ladestrom_sofort.state==15) {sendCommand(sofortcurrent_Sendebefehl,"15")}
if (Ladestrom_sofort.state==16) {sendCommand(sofortcurrent_Sendebefehl,"16")}
if (Ladestrom_sofort.state==17) {sendCommand(sofortcurrent_Sendebefehl,"17")}
if (Ladestrom_sofort.state==18) {sendCommand(sofortcurrent_Sendebefehl,"18")}
if (Ladestrom_sofort.state==19) {sendCommand(sofortcurrent_Sendebefehl,"19")}
if (Ladestrom_sofort.state==20) {sendCommand(sofortcurrent_Sendebefehl,"20")}
if (Ladestrom_sofort.state==21) {sendCommand(sofortcurrent_Sendebefehl,"21")}
if (Ladestrom_sofort.state==22) {sendCommand(sofortcurrent_Sendebefehl,"22")}
if (Ladestrom_sofort.state==23) {sendCommand(sofortcurrent_Sendebefehl,"23")}
if (Ladestrom_sofort.state==24) {sendCommand(sofortcurrent_Sendebefehl,"24")}
if (Ladestrom_sofort.state==25) {sendCommand(sofortcurrent_Sendebefehl,"25")}
if (Ladestrom_sofort.state==26) {sendCommand(sofortcurrent_Sendebefehl,"26")}
if (Ladestrom_sofort.state==27) {sendCommand(sofortcurrent_Sendebefehl,"27")}
if (Ladestrom_sofort.state==28) {sendCommand(sofortcurrent_Sendebefehl,"28")}
if (Ladestrom_sofort.state==29) {sendCommand(sofortcurrent_Sendebefehl,"29")}
if (Ladestrom_sofort.state==30) {sendCommand(sofortcurrent_Sendebefehl,"30")}
if (Ladestrom_sofort.state==31) {sendCommand(sofortcurrent_Sendebefehl,"31")}
if (Ladestrom_sofort.state==32) {sendCommand(sofortcurrent_Sendebefehl,"32")}
end

Sitemap:
Selection item=Lademodus_owb label="Lademodus [%s]" icon="sun_clouds" mappings=[0.0="sofort", 1.0="min + PV", 2.0="nur PV", 3.0="stop",4.0="opt. Netz"]
Setpoint item=Ladestrom_sofort label="Ladestrom sofort [%.0f A]" icon="ampere" step=1 minValue=6 maxValue=30 visibility=[Lademodus_owb == "0.0"]
Setpoint item=LadestromPVmin label="Ladestrom PV min [%.0f A]" icon="ampere" step=1 minValue=6 maxValue=16 visibility=[Lademodus_owb == "1.0"]

Ich hoffe, dass das hilfreich sein könnte.
Den 4.0="opt. Netz" gibt es in der openWB nicht. Hiermit habe ich rules um mit Tibber in den optimalen Zeiten zu laden.
Tesla Model Y, VW E-Up, 2x openWB, Solaredge-PV 15,5 kWp ONO, BYD LVS 32 kWh und 3-phasige Victron Multiplus-II 5000 mit Victron DC-PV 7,2 kWp NNW, Daikin Wärmepumpe.
Christoph11
Beiträge: 6
Registriert: Mo Mär 06, 2023 11:37 am

Re: chargemode per MQTT ändern in openWb 2.0

Beitrag von Christoph11 »

Hallo zusammen,

versuche ebenfalls Werte von Openhab nach der Openwb (1.9.295) zu senden.
Werte empfange klappt ohne Probleme nur bei senden tue ich mich noch schwer.

Wie habt Ihr die MQTT Command Topic erhalten???

Wenn ich mit dem MQTT Explorer schaue bekomme ich set und dann graph (Siehe Bild), abere nicht die Command Einträge.

Wo und wie finde ich die MQTT.log von openWB?

Oder ist das nur unter der Version 2.0 möglich?

Gruß
Christoph
Dateianhänge
Screenshot MQTT.jpg
hominidae
Beiträge: 1408
Registriert: Di Sep 03, 2019 4:13 pm
Has thanked: 7 times
Been thanked: 8 times

Re: chargemode per MQTT ändern in openWb 2.0

Beitrag von hominidae »

...die set Topics musst Du selbst publishen. Die openWB als Subscriber wird diese, nach erfolgreicher Bearbeitung wieder löschen. Daher sind die im Broker i.d.R. leer.

Es gibt (sollte geben) im Prinzip zu jedem Topic, das die openWB publiziert und das einen einstellbaren Parameter beinhaltet (quasi "get") ein korrespondierendes "set" topic.

Der globale Charge-Mode ist hier: openWB/set/ChargeMode
LutzB
Beiträge: 3781
Registriert: Di Feb 25, 2020 9:23 am
Has thanked: 4 times
Been thanked: 25 times

Re: chargemode per MQTT ändern in openWb 2.0

Beitrag von LutzB »

Bitte 1.9 und 2.0 nicht mischen. Es gibt nicht ohne Grund zwei getrennte Unterforen.

Für Fragen zur 1.9 bitte dort posten.

Danke
Antworten