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