Wechselrichter per MQTT
Verfasst: 30. Mär 2024 10:55
Hallo, Ich habe gestern mein Balkonkraftwerk installiert und per MQTT in openhab eingebunden. Ich habe drei Kanäle eingebunden
welche auch Daten bringen. Dann habe ich folgendes Skript aus diesen Forum im Hintergrund laufen.
meine erste Frage ob es Sinnvoll ist das Skript alle 5 Sekunden durchlaufen zu lassen ?
Ich Errechne mit eurer Hilfe meinen Gasverbrauch per Rule Jetzt dachte ich das ich das auch mit dem Solarertrag machen kann und habe folgende Items angelegt.
und folgende Rule umgeschrieben.
leider möchte es nicht funktionieren. Es kommt im Log immer die Fehlermeldung.
Hat jemand einen Tipp für mich was ich anders machen muss ?
Code: Alles auswählen
UID: mqtt:topic:MQTTBroker:Solar
label: Solar
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:MQTTBroker
location: Garten
channels:
- id: SolarAktuell
channelTypeUID: mqtt:number
label: Solar Aktuell
description: ""
configuration:
stateTopic: solar/power
- id: SolarHeute
channelTypeUID: mqtt:number
label: Solar Heute
description: ""
configuration:
stateTopic: solar/total_today
- id: SolarGesamt
channelTypeUID: mqtt:number
label: "Solar Gesamt "
description: ""
configuration:
stateTopic: solar/total
Code: Alles auswählen
#!/bin/bash
TMP=/tmp/.grab.$$
USER=admin
PASSWORD=admin
IPINVERTER=192.168.2.154
MQTT=192.168.2.200
SLEEP=5
while [ 1 ]
do
curl --silent --user ${USER}:${PASSWORD} http://${IPINVERTER}/status.html > $TMP
if [ $? = 0 ]; then
CUR_POW=`grep "var webdata_now_p" $TMP | cut -d\" -f2`
YIE_TOD=`grep "var webdata_today_e" $TMP | cut -d\" -f2`
YIE_TOT=`grep "var webdata_total_e" $TMP | cut -d\" -f2`
mosquitto_pub -h ${MQTT} -t solar/power -m "$CUR_POW" -q 1
mosquitto_pub -h ${MQTT} -t solar/total_today -m "$YIE_TOD" -q 1
mosquitto_pub -h ${MQTT} -t solar/total -m "$YIE_TOT" -q 1
fi
sleep ${SLEEP}
done
Ich Errechne mit eurer Hilfe meinen Gasverbrauch per Rule Jetzt dachte ich das ich das auch mit dem Solarertrag machen kann und habe folgende Items angelegt.
Code: Alles auswählen
Group Solarertrag
String Solarertrag_Heute_Item "SolarHeute" <solarplant> (Solarertrag)
String Solarertrag_Woche_Item "SolarWoche"<solarplant> (Solarertrag)
String Solarertrag_Monat_Item "SolarMonat"<solarplant> (Solarertrag)
String Solarertrag_Jahr_Item "SolarJahr"<solarplant> (Solarertrag)
Code: Alles auswählen
rule "Solarertrag Tag Woche Monat Jahr" // Deutscher Zeichensatz zulässig
when
Item Solar_Solar_Gesamt_ changed // changed reicht.
then
val Preis = 0.481
val ZonedDateTime zdt = ZonedDateTime.now() // jetzt
val ZonedDateTime start_of_day = zdt.with(LocalTime.MIDNIGHT) // heute, Mitternacht
val ZonedDateTime start_of_week = start_of_day.minusDays(start_of_day.getDayOfWeek.getValue - 1) // Montag
val ZonedDateTime start_of_month = start_of_day.withDayOfMonth(1) // Erster Tag des Monats (1)
val ZonedDateTime start_of_year = start_of_day.withDayOfYear(89) // Läuft seit 29.03.2024
val float Solarertrag_Heute = (Solar__Solar_Aktuell.deltaSince(start_of_day) as Number).floatValue // kWh Delta holen
val float Solarertrag_Woche = (Solar__Solar_Aktuell.deltaSince(start_of_week) as Number).floatValue
val float Solarertrag_Monat = (Solar__Solar_Aktuell.deltaSince(start_of_month) as Number).floatValue
val float Solarertrag_Jahr = (Solar__Solar_Aktuell.deltaSince(start_of_year) as Number).floatValue
val String Euro_Heute = String::format("%.2f €",(Solarertrag_Heute * Preis)) // Summe in Euro berechnen
val String Euro_Woche = String::format("%.2f €",(Solarertrag_Woche * Preis))
val String Euro_Monat = String::format("%.2f €",(Solarertrag_Monat * Preis))
val String Euro_Jahr = String::format("%.2f €",(Solarertrag_Jahr * Preis))
Solarertrag_Heute_Item.postUpdate(Solarertrag_Heute.toString + " kWh/" + Euro_Heute)
Solarertrag_Woche_Item.postUpdate(Solarertrag_Woche.toString + " kWh/" + Euro_Woche)
Solarertrag_Monat_Item.postUpdate(Solarertrag_Monat.toString + " kWh/" + Euro_Monat)
Solarertrag_Jahr_Item.postUpdate(Solarertrag_Jahr.toString + " kWh/" + Euro_Jahr)
end
Code: Alles auswählen
2024-03-30 10:51:21.347 [WARN ] [ab.binding.mqtt.generic.ChannelState] - Command '' from channel 'mqtt:topic:MQTTBroker:Solar:SolarAktuell' not supported by type 'NumberValue': null
2024-03-30 10:51:21.358 [WARN ] [ab.binding.mqtt.generic.ChannelState] - Command '' from channel 'mqtt:topic:MQTTBroker:Solar:SolarHeute' not supported by type 'NumberValue': null
2024-03-30 10:51:21.371 [WARN ] [ab.binding.mqtt.generic.ChannelState] - Command '' from channel 'mqtt:topic:MQTTBroker:Solar:SolarGesamt' not supported by type 'NumberValue': null