Ankündigung

Einklappen
Keine Ankündigung bisher.

Beitrag: Plugin zum Lesen von SMA-Wechselrichtern (Sunnyboy 5000TL-21 getestet)

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

    tween-min.js ist korrekt.

    die .map datei habe ich aber 100% NICHT drin..

    Artikel wird korrigiert - mit den artikeln ist das wie mit code: keiner hier ist der papst und unfehlbar.. ich dokumentiere das üblicherweise mit wenn ich es für mich umsetze, da kann man auch dinge vergessen.. daher ist der artikel wie die software "open source"..

    immerhin danke fürs selber lösen! mir fehlt derzeit echt die zeit..

    Kommentar


      Du hast recht, es reicht die tween-min.js zu ergänzen.
      allerdings habe ich eine Fehlermeldung für die .map in der Konsole gefunden und sie dann auch noch dazu gepackt.

      Kommentar


        nächste Frage:
        das PlugIn: smaem holt alle paar Sekunden die Werte vom Energy Meter.
        wenn ich die in die Datenbank packe, wächst die ganz schön schnell.
        ( ein ähnliches Problem habe ich mit den darksky Temperaturen, mit 2 Nachkommastellen) .

        wie kann ich denn die Werte vor dem Speichern runden; ich finde dazu kein Beispiel.
        ginge das mit eval: round ?
        und wie ?
        eval: round(value,1) im Item ?

        Kommentar


          so geht's; aber hat jemand eine Idee, wie man das geschickter machen könnte ?

          Code:
                  temperature:
                      type: num
                      [MARKIEREN]eval: round(sh.darksky.currently.temperature(), 1)[/MARKIEREN]
                      database: 'init'
                      ds_matchstring: currently/temperature
                  apparenttemperature:
                      type: num
                      ds_matchstring: currently/apparentTemperature
                  dewpoint:
                      type: num
                      [MARKIEREN]eval: round(sh.darksky.currently.dewpoint(), 1)[/MARKIEREN]
                      database: 'init'
                      ds_matchstring: currently/dewPoint
          jetzt läuft es bei mir so:

          Code:
                  temperature:
                      type: num
                      [MARKIEREN]eval: round(value, 1)[/MARKIEREN]
                      database: 'init'
                      ds_matchstring: currently/temperature
          Zuletzt geändert von whe; 07.11.2018, 09:38.

          Kommentar


            whe ok das mit der console checke ich nochmal

            im chrome habe ich keinen fehler, welcher browser wirft das bei dir? und wie sieht die meldung aus
            Zuletzt geändert von psilo; 21.10.2018, 13:39.

            Kommentar


              es war im Fireox;
              ich kann es aber nicht mehr reproduzieren und läuft wirklich ohne .map tadellos.

              Kommentar


                psilo: zu #131

                Zitat von psilo Beitrag anzeigen
                ich glaube eher, dass das ein weiterer magischer lokaler effekt bei dir ist
                dann schau mal bitte in den code der Generierung: plugin: visu_smartvisu

                dort wird das dropin directory bei jeder Generierung gelöscht und dann nach und nach die widgets der einzelnen plugins hineinkopiert:

                Code:
                2018-11-05  10:46:51 INFO     plugins.visu_smartvisu Starting smartVISU v2.9 handling
                2018-11-05  10:46:51 INFO     plugins.visu_smartvisu Installing widgets into smartVISU v2.9
                2018-11-05  10:46:51 DEBUG    plugins.visu_smartvisu install_widgets: Installing from '/usr/local/smarthome' to '/var/www/html/smartVISU2.9'
                2018-11-05  10:46:51 DEBUG    plugins.visu_smartvisu install_widgets: [MARKIEREN]Creating directory for widgets[/MARKIEREN]
                2018-11-05  10:46:51 DEBUG    plugins.visu_smartvisu install_widgets: Removing old dynamic widget files
                ich habe eine saubere neue Installation.
                und nach jedem Neustart von smarthomeng sind files weg, die ich dort manuell reinkopiert habe.

                Kommentar


                  soweit ich das sehe wird in https://github.com/smarthomeNG/plugi...su/__init__.py via rmtree nur ein tmpdir gelöscht, das als "temp" initalisiert ist.. kannst ja mal debugausgaben einbauen?!

                  Kommentar


                    Heute möchte ich noch mal auf die eigentliche Funktion dieses Threads zurückkommen: die Anbindung eines SMA Wechselrichters via Bluetooth an SHNG.
                    Mein neuester Weg sieht jetzt so aus, dass ich auf einem Raspi in der Nähe meines WR ein SBFspot implementiert habe: https://github.com/SBFspot/SBFspot
                    SBFspot sammelt fleißig die Daten meines WR und lädt sie in eine SQLite DB. zusätzlich habe ich hier MQTT aktiviert, sodass die Daten jetzt schon beim MQTT server in SHNG ankommen.
                    Dort muss ich sie jetzt nur noch abgreifen und in SHNG in items stecken.
                    Jetzt übe ich mit zwei Möglichkeiten:
                    - ein neues plugin, welches die Daten über MQTT erhält
                    - eine Logik, die die Daten entgegen nimmt.
                    zu beidem gibt es beispile in der SHNG Dokumentation
                    Da ich kein Python Programmierer bin und mit der OO nicht klar komme, muss ich halt viel experimentieren, um die SHNG Dokumentation zu verstehen. bisher war ich noch nicht sehr erfolgreich.
                    wenn jemand mir ein Code-Beispiel liefern könnte um die Daten bei MQTT abzuholen, wäre ich sehr dankbar.
                    was SBFspot dort abliefert, sieht folgendermaßen aus: JSON
                    Code:
                    {
                      "Timestamp": "24/02/2022 11:55:13",
                      "SunRise": "24/02/2022 07:32:00",
                      "SunSet": "24/02/2022 18:06:00",
                      "InvSerial": 2100461495,
                      "InvName": "SN: 2100461495",
                      "InvTime": "24/02/2022 11:55:11",
                      "InvStatus": "Ok",
                      "InvTemperature": 46.21,
                      "InvGridRelay": "Geschlossen",
                      "EToday": 2.22,
                      "ETotal": 37484.86,
                      "PACTot": 1287,
                      "UDC1": 311.91,
                      "UDC2": 309.33,
                      "IDC1": 1.793,
                      "IDC2": 1.948,
                      "PDC1": 559,
                      "PDC2": 602
                    }
                    Das Topic ist: sbfspot_2100461495
                    Die Daten zu parsen und in items stecken, kriege ich schon hin; aber die MQTT Kommunikation noch nicht.
                    wer kann mir bitte helfen ?

                    Kommentar


                      Hallo,

                      wäre es eine Alternative auf den Wechselrichter via Netzwerk (TCPIP) zuzugreifen?
                      Ich könnte ein python script bereitstellen, mit dem man recht schnell ein Plugin draus machen kann.

                      Kommentar


                        Danke nein, mein Wechselrichter kann kein TCP/IP, der ist schon 12 Jahre alt.
                        Auch hatte ich schon ein LAN Modul nachgerüstet, aber die Software des WR kann das nicht.
                        bei mir geht nur Bluetooth.
                        In erster Linie geht es um die MQTT subscription.

                        Kommentar


                          ich verzweifle; was mache ich nur falsch.
                          Code:
                          #!/usr/bin/env python3
                          # logics/smamqtt.py
                          # mqtt.unsubscribe_topic(logic.name, 'sbfspot_2100461495')
                          def logic_subscribe_topic(logger, mqtt, logic, topic, payload_type='str'):
                              logger.info("Function '{}()' - called by '{}()' in logic '{}'".format(inspect.stack()[0][3], inspect.stack()[1][3], logic.name))
                              mqtt.subscribe_topic(logic.name, topic, logic.name, qos=None, payload_type='str', bool_values=None)
                              # mqtt.subscribe_topic(source_logic, topic, callback, qos=None, payload_type='str', bool_values=None)
                          
                          # logic main-code starts here
                          logger.info("Triggered: trigger['source'] = {}, trigger[by] = {}, trigger[value] = {}".format(trigger['source'], trigger['by'], trigger['value']) )
                          if mqtt is None:
                              # no MQTT support available
                              logger.warning("MQTT module is not loaded or not yet initialized")
                          elif trigger['source'] == 'mqtt':
                              # callback received
                              logger.info("callback received")
                              topic = trigger['by']
                              payload = trigger['value']
                              logger.info("MQTT received topic '{}': payload = '{}' - type(payload) = {})".format(topic, payload, type(payload)))
                          else:
                              # logger, mqtt and logic are handed over to functions, because only this way they are accessable in a logic's function
                              logic_subscribe_topic(logger, mqtt, logic, 'sbfspot_2100461495' )
                          beim subscribe erhalte ich folgenden Fehler:
                          Code:
                          2022-02-24 14:51:36 INFO logics.MQTT_SMA Function 'logic_subscribe_topic()' - called by '<module>()' in logic 'MQTT_SMA'
                          wenn dann beim MQTT was ankommt, sehe ich folgendes im Log

                          Code:
                          2022-02-24 14:50:13 ERROR modules.mqtt _on_mqtt_message: received topic for unknown subscriber_type 'unknown'
                          2022-02-24 14:50:13 ERROR modules.mqtt _on_mqtt_message: Received topic 'sbfspot_2100461495', payload 'b'{"Timestamp": "24/02/2022 14:50:13","SunRise": "24/02/2022 07:32:00","SunSet": "24/02/2022 18:06:00","InvSerial": 2100461495,"InvName": "SN: 2100461495","InvTime": "24/02/2022 14:50:11","InvStatus": "Ok","InvTemperature": 50.600,"InvGridRelay": "Geschlossen","EToday": 7.649,"ETotal": 37490.357,"PACTot": 343.000,"UDC1": 313.300,"UDC2": 295.540,"IDC1": 0.521,"IDC2": 0.585,"PDC1": 163.000,"PDC2": 172.000}'', QoS '0', retain '0' WITHOUT matching item/logic
                          ich teste das leider in einem älteren System mit SHNG 1.7.2

                          Kommentar


                            Unter 1.9.2 scheint's zu funktionieren; trotzdem wundern mich die WARNINGS

                            Code:
                            2022-02-24  15:19:59 WARNING  modules.admin.api_logics LogicsController.set_logic_state(create): Logic file smamqtt.py already exists
                            2022-02-24  15:20:03 WARNING  modules.admin.api_logics REST_dispatch_execute: smamqtt: 'name'
                            2022-02-24  15:22:53 INFO     logics.smamqtt      Triggered: trigger['source'] = None, trigger[by] = Admin, trigger[value] = None
                            2022-02-24  15:22:53 INFO     logics.smamqtt      Function 'logic_subscribe_topic()' - called by '<module>()' in logic 'smamqtt'
                            2022-02-24  15:25:13 INFO     logics.smamqtt      Triggered: trigger['source'] = mqtt, trigger[by] = sbfspot_2100461495, trigger[value] = {"Timestamp": "24/02/2022 15:25:13","SunRise": "24/02/2022 07:32:00","SunSet": "24/02/2022 18:06:00","InvSerial": 2100461495,"InvName": "SN: 2100461495","InvTime": "24/02/2022 15:25:12","InvStatus": "Ok","InvTemperature": 48.750,"InvGridRelay": "Geschlossen","EToday": 7.817,"ETotal": 37490.525,"PACTot": 735.000,"UDC1": 310.690,"UDC2": 302.030,"IDC1": 1.052,"IDC2": 1.487,"PDC1": 326.000,"PDC2": 449.000}
                            2022-02-24  15:25:13 INFO     logics.smamqtt      callback received
                            2022-02-24  15:25:13 INFO     logics.smamqtt      MQTT received topic 'sbfspot_2100461495': payload = '{"Timestamp": "24/02/2022 15:25:13","SunRise": "24/02/2022 07:32:00","SunSet": "24/02/2022 18:06:00","InvSerial": 2100461495,"InvName": "SN: 2100461495","InvTime": "24/02/2022 15:25:12","InvStatus": "Ok","InvTemperature": 48.750,"InvGridRelay": "Geschlossen","EToday": 7.817,"ETotal": 37490.525,"PACTot": 735.000,"UDC1": 310.690,"UDC2": 302.030,"IDC1": 1.052,"IDC2": 1.487,"PDC1": 326.000,"PDC2": 449.000}' - type(payload) = <class 'str'>)
                            dann mache ich mal weiter mit dem parsen der items

                            Kommentar


                              sieht jetzt schon sehr gut aus; werde noch eine komplette Anleitung nachliefern.
                              die Logik läuft mit crontab: init, dadurch wird wohl der subscribe beim Neustart ausgeführt.
                              aber offensichtlich auch beim neuen laden der Logik ( was wohl nicht weiter stört )

                              ein kleines Problem habe ich noch:
                              Beim Neustart von SHNG erscheint noch eine Meldung im Log:
                              Code:
                              2022-02-24  17:49:18 NOTICE   lib.smarthome       --------------------   SmartHomeNG restarting, initiated by admin interface   --------------------
                              2022-02-24  17:49:31 WARNING  lib.module          Error while stopping module 'mqtt'
                              -> 'dict' object has no attribute 'id'
                              2022-02-24  17:49:36 NOTICE   lib.smarthome       --------------------   SmartHomeNG stopped   --------------------
                              2022-02-24  16:49:38 NOTICE   lib.smarthome       --------------------   Init SmartHomeNG v1.9.1-master (8133e714)   --------------------
                              2022-02-24  16:49:38 NOTICE   lib.smarthome       Running in Python interpreter 'v3.7.3 final', from directory /usr/local/smarthome
                              2022-02-24  16:49:38 NOTICE   lib.smarthome        - on Linux-5.10.63-v7l+-armv7l-with-debian-10.11 (pid=10373)
                              2022-02-24  16:49:39 NOTICE   lib.smarthome        - Nutze Feiertage für Land 'DE', Provinz 'NW', benutzerdefinierte(r) Feiertag(e) nicht definiert
                              2022-02-24  17:49:46 NOTICE   lib.smarthome       --------------------   SmartHomeNG initialization finished   --------------------
                              2022-02-24  17:49:51 INFO     logics.hello        Hello World!
                              2022-02-24  17:49:52 INFO     logics.smamqtt      Function 'logic_subscribe_topic()' - called by '<module>()' in logic 'smamqtt'
                              2022-02-24  17:50:13 INFO     logics.smamqtt      MQTT received topic 'sbfspot_2100461495': payload = '{"Timestamp": "24/02/2022 17:50:13","SunRise": "24/02/2022 07:32:00","SunSet": "24/02/202

                              Kommentar


                                Warum hast du das nicht mit dem internen mqtt plugin gelöst, das ist doch viel fehlerunabfälliger?
                                dann könntest du die direkt mit den items arbeiten, ohne logik?!

                                Kommentar

                                Lädt...
                                X