NEWS
Einfach Werte addieren und über MQTT senden
-
@kemnamol Du machst das Zahnrad auf und setzt 2 Parameter:
Den ersten nennst Du topic und den zweiten message.
In die Nachricht bildest Du Deine Summe.
Die Summe bildest Du, wie Du es gemacht hast .
Wie gesagt wenn der Datenpunkt schon existiert kannst Du ihn auch normal mit steuere beschreiben (dann aber ohne SendTo).
Hier mal das gesamte Blockly zum Import:
Wenn Du die originale Doku zum Mqtt-Adapter anschaust, dann muss das Objekt die beiden Eigenschaften topic und message enthalten:
aus: https://github.com/ioBroker/ioBroker.mqtt
Ergebnisse brauchst Du nicht anhaken - weil nichts zurückkommt von dem SendTo.
-
@kemnamol sagte in Einfach Werte addieren und über MQTT senden:
Bei mir gibt es keine Felder topic und message. Und der Wert muss ja auch erst noch berechnet werden.
Ich berechne die Summe doch direkt beim Konstruieren der Nachricht, wie Du aus meinem Screenshot entnehmen kannst.
-
@mickym Vielen Dank! Wieder eine Menge gelernt.
Leider wird kein neuer Datenpunkt erzeugt. Fehler sind im log auch nicht zu sehen.
Ich hätte erwartet dass es grafisch einfacher ist. Vielleicht sollte ich es doch mal direkt in JS probieren.
-
@kemnamol Vielleicht nur mal den Browser refreshen - das hilft oder neu auf und zu machen.
-
@mickym Raspi neu gestartet, anderen Browser benutz, nix...
-
@kemnamol sagte in Einfach Werte addieren und über MQTT senden:
@mickym Raspi neu gestartet, anderen Browser benutz, nix...
Schalte mal um auf JS und vergleiche mal:
sendTo("mqtt.1", "sendMessage2Client", { "topic": 'test/summe', "message": parseFloat(getState("0_userdata.0.Test.Temperaturen.Bad.Temperatur").val) + getState("0_userdata.0.Test.Temperaturen.Wohnzimmer.Temperatur").val });
Wenn es da bis auf die Datenpunkte und topic Abweichungen gibt, dann ggf. korrigieren. Ansonsten weiß ich auch nicht.
-
@mickym erschreckend gleich:
sendTo("mqtt.0", "sendMessage2Client", { "topic": 'Deye-PV/PV-ges', "message": parseFloat(getState("modbus.1.holdingRegisters.40673_PV1_input_power").val) + getState("modbus.1.holdingRegisters.40674_PV2_input_power").val });
Aber bei dir ist mqtt.1
Muss ich zum senden einen extra client installieren? -
@kemnamol Nein musst Du nicht. - Alternativ legst Du den Datenpunkt manuell an und beschreibst ihn normal mit steuere.
-
@mickym das hatte ich versucht, geht aber nicht. Das + ist unter mqtt ausgegraut
Ordner kann ich auch nicht anlegen. -
@kemnamol Expertenmodus einschalten und dann auf mqtt.0 Ebene Cursor
Dann Datenpunkt wie folgt anlegen:
-
@mickym Danke, das geht. Darauf kommt man aber auch wieder niemals alleine.
Mal schnell bisschen iobroker machen.
Allerdings hat er das nur einmalig berechnet. Muss ich die Eingangswerte auf Änderung abfragen, oder geht das auch einfacher? -
@kemnamol Ich würde beide auf Änderung abfragen und den jeweils anderen wert dazu zählen.
-
@mickym said in Einfach Werte addieren und über MQTT senden:
vielen, vielen Dank! So funktioniert das endlich Top!
Nur ist heute wieder keine Zeit mehr für ernsthaftes Programmieren. Immer diese Spieltrieb. -
darf ich mich einmal hier einklinken, ich versuche auch gerade via MQTT aus dem iobroker Daten zur PV und Strom zu senden. Klappt nicht.
Der MQTT Wert in der Deklaration des evcc wird erkannt, abonniert und sogar im iobroker angelegt.
ABER ich bekomme keine Werte übergtragen wenn ich Werte in den Datenpunkt schreibe- nicht manuell und nicht via script.
Ausgelesen werden die Daten zur Steuerung des evcc unter side und loadpunkt auch 1a.lediglich das zurückschreiben geht nicht:
hier meine Deklaration des Grids:meters:
- name: grid1
type: custom
power: #
source: mqtt
topic: mqtt/0/evcc/Neuer_Zustand
Meldung:
[mqtt ] DEBUG 2023/07/04 06:18:32 mqtt/0/evcc/Neuer_Zustand wait for initial valueWärst du so nett und würdest einmal deine Grid-Konfiguration posten.
Du übergibst ja wahrscheinlich auch Grid und PV ? - name: grid1
-
@uschi08 ich glaube, du verwechselst den Pfad mit den Daten die EVCC selber sendet.
Ich habe zum Testen das Programm MQTT-Explorer auf dem PC.
Ich habe einmal die PV-Daten vom Deye mit den vorher in iobroker addieren Werten.
Du könntest diese aber auch getrennt einlesen, EVCC addiert diese.
Als 2. PV habe ich aber noch einen Huawei.- type: custom name: Deye power: source: mqtt topic: Deye/Deye-PV-ges timeout: 70s
Grid hole ich von einem Shelly 3EM und die Akkudaten direkt (auch per MQTT) vom Daly-BMS.
Aber da kannst du ja auch 1:1 die entsprechenden Daten vom DEYE nehmen.- name: battery type: custom power: source: mqtt topic: daly/Pack_Power scale: -1 # scale: 0.001 # floating point factor applied to result, e.g. for Wh to kWh conversion timeout: 70s soc: source: mqtt topic: daly/Pack_SOC timeout: 70s
Ich habe den zu übergebenden Wert (im Experpenmodus!) manuell im iobroker angelegt:
Viel Erfolg. -
@kemnamol
Danke dir. Mal sehen, ob es hinhaut, aber so habe ich eine Fehlerquelle ausgeschlossen.edit: geht net..ich bekomme keine Werte aus dem IoBroker, empfangen tut er sie.
Darf ich fragen wie deine MQTT-Adapterkonfig aussieht?
So, oder hast du andere Werte gesetzt? -
@kemnamol wie gesagt, nutze am besten am PC den MQTT-Explorer. Da kannst du alle Daten sehen ohne im trüben zu stochern.
Meine config:
-
Danke.
Die Maske beim Senden der eigenen States war es.
Ich hatte nochmal ne zweite Instanz aufgemacht, da waren die Defaultwerte dann auch korrekt und zudem der Port wieder auf 1883.
Merci
Ole