NEWS
[Gelöst] MQTT - Sonoff POW ENERGY JSON neuer Datenpunkt
-
Hallo,
wie kann ich den JSON Energy LOG in ein brauchbares Format bringen?
Ich möchte mit den einzelnen Werten aus den ENERGY Log weiter arbeiten.
Ich brauche unter unter Objekten die Werte für "WATT" - "A" - "Volt"
Danke schon mal
<u>JSON vom Sonoff POW ENERGY</u>
{"Time":"2017-12-12T12:56:45", "Total":0.970, "Yesterday":0.006, "Today":0.964, "Period":2, "Power":6, "Factor":0.42, "Voltage":223, "Current":0.062}
-
Hatte ich bereits beschrieben. Durchsuch mal meine Beiträge nach sonoff pow JSON converter
Gesendet von meinem SM-G930F mit Tapatalk
-
Mein erster Versuch. Nur leider bekomme ich keine Daten.
Den Code habe ich hier im Forum gefunden.
/* Json Converter Sonoff POW Setup: Pfad + Channel + SName setzen / immer ein . am ende */ var pfad = "Keller."; var channel = "Waschmaschine."; var sname = "Waschmaschine."; // do not change var idwatt = pfad + channel + sname + 'Watt'; var idvolt = pfad + channel + sname + 'Volt'; var idampere = pfad + channel + sname + 'Ampere'; // Create States createState(idwatt, 0,{type: 'number',name: 'Aktuelle Leistung', read: true,write: true,role: 'value'}); createState(idvolt, 0,{type: 'number',name: 'Aktuelle Spannung', read: true,write: true,role: 'value'}); createState(idampere, 0,{type: 'number',name: 'Aktueller Strom', read: true,write: true,role: 'value'}); // script beginning on({id: 'mqtt.0.sonoff_pow.ENERGY', change: "any"}, function (obj) { //variabele erstellen fuer meine 3 beispiel objecte var volt; var watt; var ampere; try {obj = JSON.parse(getState('mqtt.0.sonoff_pow.ENERGY').val); } catch (e) { console.error('Cannot parse: ' + getState('mqtt.0.sonoff_pow.ENERGY').val); return; } volt = obj.Voltage; watt = obj.Power; ampere = obj.Current; setState(idwatt, watt); setState(idvolt, volt); setState(idampere, ampere); log(volt); log(watt); log(ampere); });
-
Hatte ich bereits beschrieben. Durchsuch mal meine Beiträge nach sonoff pow JSON converter `
Habe ich gelesen.
Der Code müsste von Dir sein.
Ich denke das ich ein Problem mit dem PFAD - CHANEL - SNAME habe
-
Musst du auch für dich umarbeiten.
Gesendet von meinem SM-G930F mit Tapatalk
-
Was muss ich denn noch umarbeiten?
Was ist der PFAD - CHANEL und SNAME
> mqtt.0.sonoff_pow.ENERGY
Habe ich jetzt in mqtt.0.waschmaschine.ENERGY geändert.
` > Sonoff Pow Module
Waschmaschine
–---------------------
MQTT parameters
Host (domus1)
192.168.178.39
–---------------------
Port (1883)
1882
–---------------------
Client (DVES_A03248)
Waschmaschine
–---------------------
User (DVES_USER)
Asrock
–---------------------
Password
••••••••
–---------------------
Topic = %topic% (sonoff)
sonoff
–---------------------
Full Topic (%prefix%/%topic%/)
/Keller/Waschmaschine
–--------------------- `
-
mach mir mal bitte einen screenshot vom iobroker objekten
den full topic hatte ich bei mir default gelassen.
-
Ich hoffe das wolltest du
4542_screenshot_2017-12-12_19.00.29.png -
probier es mal so:
! ````
/*
Json Converter Sonoff POW
! Setup: Pfad + Channel + SName setzen / immer ein . am ende
! */
! var pfad = "javascript.0.jsonconverter.";
var channel = "Keller.";
var sname = "Waschmaschine.";
! // do not change
! var idwatt = pfad + channel + sname + 'Watt';
var idvolt = pfad + channel + sname + 'Volt';
var idampere = pfad + channel + sname + 'Ampere';
! // Create States
! createState(idwatt, 0,{type: 'number',name: 'Aktuelle Leistung', read: true,write: true,role: 'value'});
createState(idvolt, 0,{type: 'number',name: 'Aktuelle Spannung', read: true,write: true,role: 'value'});
createState(idampere, 0,{type: 'number',name: 'Aktueller Strom', read: true,write: true,role: 'value'});
! // script beginning
on({id: 'mqtt.0.Keller.Waschmaschiene.ENERGY', change: "ne"}, function (obj) {
! //variabele erstellen fuer meine 3 beispiel objecte
var volt;
var watt;
var ampere;
! try {obj = JSON.parse(getState('mqtt.0.Keller.Waschmaschiene.ENERGY').val);
} catch (e) {
console.error('Cannot parse: ' + getState('mqtt.0.Keller.Waschmaschiene.ENERGY').val);
return;
}
! volt = obj.Voltage;
watt = obj.Power;
ampere = obj.Current;
! setState(idwatt, watt);
setState(idvolt, volt);
setState(idampere, ampere);
! log(volt);
log(watt);
log(ampere);
});Unter Javascript wird ein unterordner json converter abgelegt und dort die sachen eingetragen. Wenn das alles nicht funktioniert muss ein profi drüber schaun. Warum nimmst du nicht den Sonoff Adapter? Ich nutze seit dem es ihn gibt das Script auch nicht mehr weil es gleich die gewünschten Daten ausgibt.
-
Habe ich auch schon versucht mit dem Adapter, nur leider bleibt der rot bei mir.
Liegt wohl daran das ich auch den MQTT Adapter vom Iobroker nutze.
Ich probiere das jetzt noch mal mit dem Sonoff Adapter.
Ich werde berichten. Das Skript von dir liefert auch keine Werte.
-
Liegt wohl daran das ich auch den MQTT Adapter vom Iobroker nutze. `
Setze den mqtt Adapter auf einen anderen port und er wird laufen und erspare dir das mühselige umsetzen des json per Script [emoji6]
–-----------------------
Send from mobile device
-
<u>DANKE</u>
4542_screenshot_2017-12-12_19.38.57.png