Ankündigung

Einklappen
Keine Ankündigung bisher.

SMA Energy Meter (SMA EM) auslesen per Multicast und Lieferung an edomi

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #31
    Demnächst werde ich mein LBS dazu auf centos 7/PHP 7 heben... dann werde ich mich auch inhaltlich wieder damit beschäftigen und kann dir - hoffentlich - gute Antworten geben.

    Kommentar


      #32
      Zitat von saegefisch Beitrag anzeigen
      Demnächst werde ich mein LBS dazu auf centos 7/PHP 7 heben... dann werde ich mich auch inhaltlich wieder damit beschäftigen und kann dir - hoffentlich - gute Antworten geben.
      Hi saegefisch das sind ja gute Nachrichten! Darauf warte ich auch sehr gespannt :-) Grüße!

      Kommentar


        #33
        Ich weiß, ich weiß...

        aber meine Pumpen waren wichtiger... die Baustelle sollte am Kommenden WE abgeschlossen sein, dann geht in der Zeit danach weiter mit dem gesamten Thema Energieversorgung mit allem Drumherum, also Notstrom/Inselschaltung, PV, EnergieMeter, influxDB&grafana,...

        Kommentar


          #34
          Zitat von saegefisch Beitrag anzeigen
          Ich weiß, ich weiß...

          aber meine Pumpen waren wichtiger... die Baustelle sollte am Kommenden WE abgeschlossen sein, dann geht in der Zeit danach weiter mit dem gesamten Thema Energieversorgung mit allem Drumherum, also Notstrom/Inselschaltung, PV, EnergieMeter, influxDB&grafana,...
          Was für Pumpen? Eventuell auch etwas was mich interessieren könnte? :-)

          Kommentar


            #35
            Wenn du die letzten Tage im Forum mitgelesen hast, dann weist Du, was ich meine. Es geht um die stetige Überwachung von drainage-Pumpen mit vielfältigem Alarm bei unterschiedlichen Abweichungen.

            Wenn nicht, dann lies es am besten nach (user-> letzte Beiträge) v.a. zum Thema neuer LBS Durchschnitt letzte x Werte... aber auch DWD rückwirkende Regenmengen und Grundwasser stand (JSON MassenDaten)...

            Kommentar


              #36
              Zitat von saegefisch Beitrag anzeigen
              Wenn du die letzten Tage im Forum mitgelesen hast, dann weist Du, was ich meine. Es geht um die stetige Überwachung von drainage-Pumpen mit vielfältigem Alarm bei unterschiedlichen Abweichungen.

              Wenn nicht, dann lies es am besten nach (user-> letzte Beiträge) v.a. zum Thema neuer LBS Durchschnitt letzte x Werte... aber auch DWD rückwirkende Regenmengen und Grundwasser stand (JSON MassenDaten)...
              Ich habe jetzt berufsbedingt nicht länger mitlesen können... Leider. Ich habe schon gesehen, dass ich einiges zum nachholen habe :-)
              Schaue mich die Tage im Forum um was an neuen und schönen Sachen dazugekommen ist!
              Grüße

              Kommentar


                #37
                Zitat von saegefisch Beitrag anzeigen
                Demnächst werde ich mein LBS dazu auf centos 7/PHP 7 heben... dann werde ich mich auch inhaltlich wieder damit beschäftigen und kann dir - hoffentlich - gute Antworten geben.
                Top, da freue ich mich drauf. Bin mal gespannt, welche Fehler ich gemacht habe. In der Zwischenzeit kann ich es aber sicher auch nicht lassen und werde sicher weiter rumprobieren. Fortschritte melde ich dann auch hier.

                Kommentar


                  #38
                  Ich mache das inzwischen mit Node-Red und dann über MQTT die gewünschten Werte an Edomi. Das finde ich inzwischen einfacher.

                  Kommentar


                    #39
                    Danke für Deinen Gedanken. Hatte ich auch schon Mal überlegt. Aber mit Node-red hole ich mir noch eine (Logik-)Instanz ins Haus/Infrastruktur. Zu Gunsten der Einfachheit habe ich mich dagegen entschieden und werde es weiter in edomi machen. Damit gilt für mich: Logik = edomi, außer es ist ein bash-Script unausweichlich.

                    wunderbar, dass es immer so schön viele Wege nach Rom gibt...

                    MQTT ist davon unbenommen und klasse. Wenngleich für diesen Zweck für mich nicht nötig, weil dann schon in edomi.

                    Man könnte allerdings edomi -> MQTT für die Versorgung von influxDB nutzen, anstatt influxDB direkt per LBS aus edomi zu befeuern... was denkt ihr dazu? Sinnvoll? Hat jemand MQTT-2-influxDB am laufen?

                    Kommentar


                      #40
                      Nein, aber ich bringe die Werte von Node-Red direkt zu der InfluxDB, das geht sehr einfach da man nicht mal die Zeit mitschicken muss. Ist sehr einfach und vor allem schnell angepasst.
                      Angehängte Dateien

                      Kommentar


                        #41
                        image_94994.png Genau so einfach wie KNX direkt nach InfluxDB. Dauert keine 10 Sekunden.

                        Oder von Edomi -> MQTT -> Node_red -> Influxdb
                        Anmerkung 2020-03-04 115908.png
                        Zuletzt geändert von hartmut; 04.03.2020, 12:00.

                        Kommentar


                          #42
                          Zitat von hartmut Beitrag anzeigen
                          Nein, aber ich bringe die Werte von Node-Red direkt zu der InfluxDB
                          Ich arbeite prinzipiell auch mit Node Red, das PHP Skript nutze ich im Moment "nur" dazu, das Datagram zu verstehen und die richtigen Werte zu isolieren. Ziel ist die direkte Umsetzung in Node Red. Würdest Du deinen flow freundlicherweise hier zur Verfügung stellen (also den ersten, nicht den KNX->InfluxDB bzw. den Edomi->MQTT->Node_red->InfluxDB) oder wenigsten den Code der entsprechenden vier function nodes? Das wäre super, vielen Dank!

                          Kommentar


                            #43
                            Zitat von rucksman007 Beitrag anzeigen
                            bekomme ich auf den einzelnen Phase auch keine Schein- und Blindleistungen
                            Ich zitiere mich mal selber.... Mann soll Code auch immer aufmerksam ab der ersten Zeile lesen und nicht direkt ins Herz des Codes springen, wo Werte generiert und ausgegeben werden. Ich hatte die Deklaration von "$type" völlig ignoriert und erst jetzt gesehen, dass dort nur "PIU" zugewiesen wurde. Nach Zuweisung von "PQSIUC" bekomme ich nun auch alle Werte.

                            Bleibt nur noch das Problem des Dateninterpretation... Und das bringt mich um den Verstand. Ich krieg die Zahlen aus dem Skript einfach nicht in Einklang mit dem, was ich im Sunnyportal bzw. im Sunny Explorer bzw. in der SMA App sehe.

                            Kommentar


                              #44
                              Ich hoffe das hilft weiter, hatte den Ursprung mal im KNX Forum gesehen und dann für mich angepasst. Läuft seit einem 1/2 Jahr ohne irgendwelche Probleme.

                              Code:
                              [
                              {
                              "id": "886d73bc.59db5",
                              "type": "delay",
                              "z": "e75a966e.f162f8",
                              "name": "",
                              "pauseType": "rate",
                              "timeout": "5",
                              "timeoutUnits": "seconds",
                              "rate": "1",
                              "nbRateUnits": "5",
                              "rateUnits": "second",
                              "randomFirst": "1",
                              "randomLast": "5",
                              "randomUnits": "seconds",
                              "drop": true,
                              "x": 180,
                              "y": 220,
                              "wires": [
                              [
                              "6dc17ff4.e4c61",
                              "dae6f85c.46aec8"
                              ]
                              ]
                              },
                              {
                              "id": "5e3cc1f3.77b46",
                              "type": "udp in",
                              "z": "e75a966e.f162f8",
                              "name": "SMA Energy Meter",
                              "iface": "",
                              "port": "9522",
                              "ipv": "udp4",
                              "multicast": "true",
                              "group": "239.12.255.254",
                              "datatype": "buffer",
                              "x": 130,
                              "y": 140,
                              "wires": [
                              [
                              "886d73bc.59db5"
                              ]
                              ]
                              },
                              {
                              "id": "dae6f85c.46aec8",
                              "type": "function",
                              "z": "e75a966e.f162f8",
                              "name": "eMeter auslesen",
                              "func": "// Script von Marco Jäger\n// die Offset ev. auf 0 setzen\nvar BezugKWhOffset = 19171.7 ;\nvar LieferungKWhOffset = 31622.3 ;\n\n// Aktueller BezugW\nvar eMeter = msg.payload;\nvar Bezug = {};\nmsg = {};\nvar deco = eMeter.toString('hex');\nBezugW=deco.substr(64,8); \nBezugW=parseInt(BezugW,16)/10;\nglobal.set('emeter.BezugW',BezugW.toFixed(1)) ;\nmsg.payload = BezugW.toFixed(1);\n\n\n// BezugKWh\nvar BezugKWh = {};\nmsg2 = {};\nBezugKWh=deco.substr(80,16);\nBezugKWh=parseI nt(BezugKWh,16)/3600000.0;\nBezugKWh += BezugKWhOffset\nglobal.set('emeter.BezugKWh', BezugKWh.toFixed(6)) ;\nmsg2.payload = BezugKWh.toFixed(1);\n\n// Aktuelle LieferungW\nvar LieferunW = {};\nmsg3 = {};\nLieferungW=deco.substr(104,8);\nLieferungW=pa rseInt(LieferungW,16)/10;\nglobal.set('emeter.LieferungW',LieferungW.toF ixed(1));\nmsg3.payload = LieferungW.toFixed(1);\nif (LieferungW > 0 ) {\n global.set('emeter.Bezug_LieferungW',-LieferungW.toFixed(1));\n} else {\n global.set('emeter.Bezug_LieferungW',BezugW.toFixe d(1));\n \n}\n\n// Gesamt LieferungKWh\nvar LieferunKWh = {};\nmsg4 = {};\nLieferungKWh=deco.substr(120,16);\nLieferungK Wh=parseInt(LieferungKWh,16)/3600000.0;\nLieferungKWh += LieferungKWhOffset ;\nglobal.set('emeter.LieferungKWh',LieferungKWh.t oFixed(6));\nmsg4.payload = LieferungKWh.toFixed(1);\n\n// Wirkleistung -Bezug/Lieferung L1\nvar wirkleistungbezugL1 = {};\nvar wirkleistungEinspeisungL1 = {};\nvar WirkleistungL1 = {} ;\nmsg5 = {};\nwirkleistungbezugL1=deco.substr(320,8);\nwirk leistungbezugL1=parseInt(wirkleistungbezugL1,16)/10;\nwirkleistungEinspeisungL1=deco.substr(360,8); \nwirkleistungEinspeisungL1=parseInt(wirkleistungE inspeisungL1,16)/10;\nif (wirkleistungbezugL1 === 0) {\n WirkleistungL1 = -wirkleistungEinspeisungL1;\n }\nelse {\n WirkleistungL1 = wirkleistungbezugL1;\n }\nglobal.set('emeter.WirkleistungL1',Wirkleistung L1.toFixed(1)) ;\nmsg5.payload = WirkleistungL1.toFixed(1) ;\n\n// Wirkleistung -Bezug/Lieferung L2\nvar wirkleistungbezugL2 = {};\nvar wirkleistungEinspeisungL2 = {};\nvar WirkleistungL2 = {};\nmsg6 = {};\nwirkleistungbezugL2=deco.substr(608,8);\nwirk leistungbezugL2=parseInt(wirkleistungbezugL2,16)/10;\nwirkleistungEinspeisungL2=deco.substr(648,8); \nwirkleistungEinspeisungL2=parseInt(wirkleistungE inspeisungL2,16)/10;\nif (wirkleistungbezugL2 === 0) {\n WirkleistungL2 = -wirkleistungEinspeisungL2;\n}\nelse {\n WirkleistungL2 = wirkleistungbezugL2;\n}\nglobal.set('emeter.Wirkle istungL2',WirkleistungL2.toFixed(1)) ;\nmsg6.payload = WirkleistungL2.toFixed(1) ;\n\n// Wirkleistung -Bezug/Lieferung L3\nvar wirkleistungbezugL3 = {};\nvar wirkleistungEinspeisungL3 = {};\nvar WirkleistungL3 = {};\nmsg7 = {};\nwirkleistungbezugL3=deco.substr(896,8);\nwirk leistungbezugL3=parseInt(wirkleistungbezugL3,16)/10;\nwirkleistungEinspeisungL3=deco.substr(936,8); \nwirkleistungEinspeisungL3=parseInt(wirkleistungE inspeisungL3,16)/10;\nif (wirkleistungbezugL3 === 0) {\n WirkleistungL3 = -wirkleistungEinspeisungL3;\n}\nelse {\n WirkleistungL3= wirkleistungbezugL3;\n}\nglobal.set('emeter.Wirkle istungL3',WirkleistungL3.toFixed(1)) ;\nmsg7.payload = WirkleistungL3.toFixed(1) ;\n\nmsg8 = {} ;\nvar snr = deco.substr(40,8);\nvar nr = parseInt(snr,16) ;\nglobal.set('emeter.Nr',nr) ;\nmsg8.payload = nr ;\n\n\nreturn [msg,msg2,msg3,msg4,msg5,msg6,msg7,msg8]",
                              "outputs": 8,
                              "noerr": 0,
                              "x": 480,
                              "y": 180,
                              "wires": [
                              [
                              "4e351293.b0378c",
                              "9aa1ffcf.1bb3e"
                              ],
                              [
                              "91c2a33.22c656"
                              ],
                              [
                              "355394e5.bfcc0c",
                              "21c0cf73.bfc4b"
                              ],
                              [
                              "cca453e2.0b41e"
                              ],
                              [
                              "cdf12cb6.1c2cf"
                              ],
                              [
                              "fc737e0b.0d18"
                              ],
                              [
                              "a9ef0332.c67e1"
                              ],
                              [
                              "68144d4c.6ed0d4"
                              ]
                              ],
                              "outputLabels": [
                              "Bezug W",
                              "Bezug KWh",
                              "Lieferung W",
                              "Lieferung KWh",
                              "Lieferung / Bezug L1",
                              "Lieferung / Bezug L3",
                              "Lieferung / Bezug L3",
                              "Nr."
                              ]
                              }
                              ]
                              Zuletzt geändert von hartmut; 04.03.2020, 14:21.

                              Kommentar


                                #45
                                Zitat von hartmut Beitrag anzeigen
                                Ich hoffe das hilft weiter
                                Super, vielen Dank!

                                Ich meinte aber eigentlich diesen Flow:
                                https://knx-user-forum.de/filedata/fetch?id=1476958

                                Hier würden mich insbesondere die beiden letzten function nodes (emeter.eigenverbrauch und wr.pac) interessieren...

                                Kommentar

                                Lädt...
                                X