define SonnenStatus HTTPMOD http://192.168.2.11:8080/api/v1/status 5
http://IPDerBatterie:8080/api/v1/status
{"Consumption_W":2902,"Fac":50,"GridFeedIn_W":-2626,"IsSystemInstalled":1,"Pac_total_W":-5,"Production_W":282,"RSOC":4,"Timestamp":"2017-03-06 09:15:18","USOC":0,"Uac":229,"Ubat":48}
ZitatAls Workaround kannst Du auch über einen wiederholenden at den set-Befehl reread am HTTPMod-Device aufrufen
define MY_Trigger DOIF ([+:01])\
(set SB_MinuteVerbrauch Value([SonnenStatus:Sum_Verbrauch]/60))\
(set SB_MinuteProduktion [SonnenStatus:Sum_Produktion])\
(set SB_MinuteBezug [SonnenStatus:Sum_Bezug])\
(set SB_MinuteEinspeisung [SonnenStatus:Sum_Einspeisung])\
(set SB_MinuteLaden [SonnenStatus:Sum_Laden])\
(set SB_MinuteEntladen [SonnenStatus:Sum_Entladen])\
(set SB_MinuteBatLaden [SonnenStatus:BatterieLadung])\
(set SB_MinuteBatEntladen [SonnenStatus:BatterieEntladung])\
(setreading SonnenStatus Sum_Verbrauch 0)\
(setreading SonnenStatus Sum_Produktion 0)\
(setreading SonnenStatus Sum_Bezug 0)\
(setreading SonnenStatus Sum_Einspeisung 0)\
(setreading SonnenStatus Sum_Laden 0)\
(setreading SonnenStatus Sum_Entladen 0)\
2017.03.07 12:03:00 4: DbLog DBLOG -> ################################################################
2017.03.07 12:03:00 4: DbLog DBLOG -> ### start of new Logcycle ###
2017.03.07 12:03:00 4: DbLog DBLOG -> ################################################################
2017.03.07 12:03:00 4: DbLog DBLOG -> amount of events received: 1 for device: SB_MinuteVerbrauch
2017.03.07 12:03:00 4: DbLog DBLOG -> check Device: SB_MinuteVerbrauch , Event: Value(28210/60)
2017.03.07 12:03:00 4: DbLog DBLOG -> added event - Timestamp: 2017-03-07 12:03:00, Device: SB_MinuteVerbrauch, Type: DUMMY, Event: Value(28210/60), Reading: state, Value: Value(28210/60), Unit:
2017.03.07 12:03:00 4: DbLog DBLOG -> processing event Timestamp: 2017-03-07 12:03:00, Device: SB_MinuteVerbrauch, Type: DUMMY, Event: Value(28210/60), Reading: state, Value: Value(28210/60), Unit:
2017.03.07 12:03:00 4: DbLog DBLOG -> 1 of 1 events successfully inserted into table history
2017.03.07 12:03:00 5: DbLog DBLOG -> DbLog_Push Returncode: 0
2017.03.07 12:03:00 5: End notify loop for SB_MinuteVerbrauch
2017-03-07 12:26:00 SB_MinuteVerbrauch DUMMY Value(30030/60) state Value(30030/60) 2017-03-07 12:26:00 SB_MinuteProduktion DUMMY 25935 state 25935 2017-03-07 12:26:00 SB_MinuteBezug DUMMY 3904 state 3904 |
define MY_Trigger DOIF ([+:01])\
({ fhem("set SB_MinuteVerbrauch". ([SonnenStatus:Sum_Verbrauch]/60) ) }) \
define MY_Trigger DOIF ([+:01])\
( set SB_MinuteVerbrauch {( [SonnenStatus:Sum_Verbrauch] / 60 )} , \
set SB_MinuteProduktion [SonnenStatus:Sum_Produktion],
...
)
define MY_Trigger DOIF ([+:01])\
( set SB_MinuteVerbrauch {( [SonnenStatus:Sum_Verbrauch] / 60 )} , \
...
)
ZitatIch verstehe zwar nicht genau was Du da machst (sekundenweise Werte abholen aber nur minutenweise speichern ???)
Zitat von: Matthias_1968 am 06 März 2017, 09:25:52
Hallo,
ich lese aktuell Werte meiner Solarbatterie mit HTTPMOD aus.Code Auswählendefine SonnenStatus HTTPMOD http://192.168.2.11:8080/api/v1/status 5
Die userReadings verarbeite ich dann weiter.
Das ganze funktioniert auch wunderbar.
Das Dumme ist, das sich die Werte jede Sekunde ändern und ich HTTPMOD nur auf 5 Sekunden reduzieren kann.
Ich rufe mit HTTPMOD die Seite aufCode Auswählenhttp://IPDerBatterie:8080/api/v1/status
und bekomme einen JSON formatierten Text zurück:Code Auswählen{"Consumption_W":2902,"Fac":50,"GridFeedIn_W":-2626,"IsSystemInstalled":1,"Pac_total_W":-5,"Production_W":282,"RSOC":4,"Timestamp":"2017-03-06 09:15:18","USOC":0,"Uac":229,"Ubat":48}
Lässt sich eine Abfrage jede Sekunde überhaupt realisieren oder verursache ich damit zuviel Datenlast?
Gruß
Matthias
defmod pvaBattery HTTPMOD http://x.x.x.x:8080/api/v1/status 15
attr pvaBattery alignTime 00:00
attr pvaBattery enforceGoodReadingNames 1
attr pvaBattery event-on-change-reading .*
attr pvaBattery event-on-update-reading Consumption_W,Production_W,GridFeedIn_W
attr pvaBattery extractAllJSON 1
attr pvaBattery handleRedirects 1
attr pvaBattery stateFormat USOC %
attr pvaBattery userReadings uCharging:BatteryCharging.* {(ReadingsVal($name,'BatteryCharging','x') eq 'true') ? 1:0 },\
uDischarging:BatteryDischarging.* {(ReadingsVal($name,'BatteryDischarging','x') eq 'true') ? 1:0},\
uGridFeedIn_Abs_W:GridFeedIn_W.* {abs(ReadingsNum($name,'GridFeedIn_W',0))},\
uPac_total_Abs_W:Pac_total_W.* {abs(ReadingsNum($name,'Pac_total_W',0))},\
uReturnCode:ReturnCode.* {my $rc=ReadingsNum($name,'ReturnCode',-1);; return $rc==0?'success':($rc==5?'invalid request path':($rc==13?'internal error':($rc==16?'invalid http method':'unknown')))}