Neu: 77_SMAEM - Modul für SMA Energie Meter. Alternative zum Sunny Home Manager.

Begonnen von Volker Kettenbach, 30 März 2016, 12:42:05

Vorheriges Thema - Nächstes Thema

DS_Starter

V 4.0.0 ist drin ... Danke an das Team !  :)
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

ch.eick

Hallo zusammen.

Ich betreibe einen SMAEM und habe nach dem fhem Umzug zu  docker ein Problem.

Muss ich eventuell im docker noch den Port freigeben?
Fhem und der SMAEM befinden sich im gleichen Netz 192.168.178.*

fhem@281a2765c420:~$ ./smaem_test.pl
Can't bind : IO::Socket::Multicast: Address already in use


Ich erinnere mich nur noch daran, dass ich folgendes installiert hatte, wie es ja in der wiki steht.

root@281a2765c420:/opt/fhem# apt-get install libio-socket-multicast-perl
Reading package lists... Done
Building dependency tree
Reading state information... Done
libio-socket-multicast-perl is already the newest version (1.12-2+b5).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.


EDIT:
Das habe ich im Modul gefunden

  eval {
  $socket = IO::Socket::Multicast->new(
           Proto     => 'udp',
           LocalPort => '9522',
           ReuseAddr => '1',
           ReusePort => defined(&ReusePort) ? 1 : 0,
  ); };

Und so ins docker-compose.yml eingetragen

    ports:
      - "9522:9522/udp"
      - "8083:8083"
      - "7072:7072"

Das hat jedoch noch zu keiner Besserung gefuehrt :-(


Internals:
   FD         27
   FUUID      5d0a2283-f33f-81e9-39ac-4c6ce5bec0afb8b4
   FVERSION   77_SMAEM.pm:v4.0.0-s20768/2019-12-16
   INTERVAL   60
   NAME       StromZaehler_Heizung
   NR         321
   STATE     
<TABLE>

<TR>
  <TD VALIGN="TOP" ALIGN="RIGHT" WIDTH="100">
    Momentan: 00000.00 Watt<br>
    <br>
    Gesamt: 00000.00 kWh<br>
  </TD>

  <TD VALIGN="TOP" ALIGN="RIGHT" WIDTH="70">
    L1: 0000.0 Watt<br>
    L2: 0000.0 Watt<br>
    L3: 0000.0 Watt
  </TD>
</TR>

</TABLE>

   TYPE       SMAEM
   HELPER:
     PACKAGE    main
     STARTTIME  1577117188.49611
     VERSION    4.0.0
   READINGS:
     2019-12-23 17:54:30   state           initialized
Attributes:
   alias      StromZaehler_Heizung
   disable    0
   group      PV Eigenverbrauch
   icon       measure_power
   interval   60
   powerCost  29.45
   room       Heizung->Info,Heizung->System,Strom->Info,Strom->Photovoltaik,Strom->System
   stateFormat {sprintf("
<TABLE>

<TR>
  <TD VALIGN=\"TOP\" ALIGN=\"RIGHT\" WIDTH=\"100\">
    Momentan: %08.2f Watt<br>
    <br>
    Gesamt: %08.2f kWh<br>
  </TD>

  <TD VALIGN=\"TOP\" ALIGN=\"RIGHT\" WIDTH=\"70\">
    L1: %06.1f Watt<br>
    L2: %06.1f Watt<br>
    L3: %06.1f Watt
  </TD>
</TR>

</TABLE>
" , ReadingsVal($name,"SMAEM1901401955_Bezug_Wirkleistung",0) ,
ReadingsVal($name,"SMAEM1901401955_Bezug_Wirkleistung_Zaehler",0),
ReadingsVal($name,"SMAEM1901401955_L1_Bezug_Wirkleistung",0) ,
ReadingsVal($name,"SMAEM1901401955_L2_Bezug_Wirkleistung",0) ,
ReadingsVal($name,"SMAEM1901401955_L3_Bezug_Wirkleistung",0)  )}
   verbose    5


Gruss
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Volker Kettenbach

Mit einer Standard-Docker-Installation kann Multicast nicht funktionieren, da fhem "hinter" dem Docker-Server arbeitet und dieser als Router mit Portforwarding arbeitet. Das FHEM ist eben *nicht* im Netz des Docker-Servers.

Wenn Du Docker so betreiben willst, dass die Container im gleichen Netz wie der Docker-Server betrieben werden, dann findest Du hinter dem folgenden Link die Infos, wie man das macht:

https://docs.docker.com/network/macvlan/

Ich betriebe den Docker-Server, auf dem FHEM läuft mit macvlan und dann geht Multicast einwandfrei.

ch.eick

Vielen Dank fuer den Link, dann werde ich da mal weiter lesen.

Gruss
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Zitat von: Volker Kettenbach am 24 Dezember 2019, 08:56:36
Mit einer Standard-Docker-Installation kann Multicast nicht funktionieren, da fhem "hinter" dem Docker-Server arbeitet und dieser als Router mit Portforwarding arbeitet. Das FHEM ist eben *nicht* im Netz des Docker-Servers.

Wenn Du Docker so betreiben willst, dass die Container im gleichen Netz wie der Docker-Server betrieben werden, dann findest Du hinter dem folgenden Link die Infos, wie man das macht:

https://docs.docker.com/network/macvlan/

Ich betriebe den Docker-Server, auf dem FHEM läuft mit macvlan und dann geht Multicast einwandfrei.
Hallo Volker,

ich habe nun bereits viel gelesen und probiert und noch mehr fehler gemacht :-) Koentest Du mir eventuel Deine docker-compose. yml mal schicken? Das mit dem Netzwerk bekomme ich einfach nicht hin.

Momentan verwende ich nur portainer und fhem, um meine jetzige Installation zu migrieren. Das udp des SMAEM ist momentan die einzige Huerde, der Rest laeft bereits.
Anschliessend moechte ich MySQL mit dblog fuer das Strom logging einrichten. Hier kann ich bereits einen Container mit MySQL starten.


So laeuft es im Moment und sammelt nur nichts vom SMAEM. Das macvlan habe ich momentan wieder raus genommen, da es bisher noch nicht geklappt hat.
Fuer die Tests hatte ich natuerlich das bisherige fhem herunter gefahren.

In einem Fall hatte ich macvlan im Docker aktiv, jedoch mit bereits vergebenen IPs, was das Theme dhcp oder feste IPs auf den Plan ruft. Im debian buster wurden diese Interfaces jedoch nicht aufgelistet.
Momentan verwende ich auch nur wlan0, was sicherlich auch ein Problem sein koennte.

pi@raspberrypi:~/docker-compose/fhem_2020 $ docker network inspect 4086223b520b
[
    {
        "Name": "fhem_2020_net",
        "Id": "4086223b520b0f3f2a5f23624f140553af506aac2cd195bbcf287e5b3f6657c4",
        "Created": "2019-12-27T12:11:51.127633849+01:00",
        "Scope": "local",
        "Driver": "macvlan",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "192.168.178.0/24",
                    "Gateway": "192.168.178.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "207ad6133df541393cc62dde403c37601b937cf0846c2b72dfeafd2fe23b5be4": {
                "Name": "fhem_2020_mysql_1",
                "EndpointID": "1d80cf720919d808086d1f2ddf2401f30e8fec8f70a1dc43dcea798b9ef51022",
                "MacAddress": "02:42:c0:a8:b2:03",
                "IPv4Address": "192.168.178.3/24",
                "IPv6Address": ""
            },
            "7061c405ecca0a62f749ea916b20ac2aa1d1c265ef94f9f7a7fee78ec46792fe": {
                "Name": "fhem_2020_portainer_1",
                "EndpointID": "6ab6836ded3cf14dded205fd6968e58902e0ddfe1f985997053e0ef2335f1cf0",
                "MacAddress": "02:42:c0:a8:b2:02",
                "IPv4Address": "192.168.178.2/24",
                "IPv6Address": ""
            },
            "7f85ac256f983a46d834ff5fb0545212d17562ccfb10ef350b514b11856224f9": {
                "Name": "fhem_2020_fhem_1",
                "EndpointID": "0aaf46ad82654ded9cb1b4c353a96db88a25bdae9d0b9865a21c0381cdc33491",
                "MacAddress": "02:42:c0:a8:b2:04",
                "IPv4Address": "192.168.178.4/24",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {
            "com.docker.compose.network": "net",
            "com.docker.compose.project": "fhem_2020"
        }
    }
]





# This is an exmaple Docker Compose file to start your own Docker Stack

version: '2.3'

networks:
  net:
    driver: bridge
    enable_ipv6: true
    ipam:
      driver: default
      config:
        - subnet: 172.27.0.0/24
          gateway: 172.27.0.1
        - subnet: fd00:0:0:0:27::/80
          gateway: fd00:0:0:0:27::1
volumes:
  portainer_data:

services:

  ####
  # HINT: use only ONE of the example "fhem:" service
  # definitions below !
  #

  # Example w/ custom environment variables
  fhem:
    image: fhem/fhem:latest
    restart: always
    networks:
      - net
    expose:
      - "8088"
    ports:
      - "9522:9522/udp"
      - "8083:8083"
      - "7072:7072"
    privileged: true
    devices:
      - "/dev/ttyACM0:/dev/ttyACM0"
    volumes:
      - "./core/:/opt/fhem/"
#      - "./core/contrib/configDB/configDB.conf:/opt/fhem/configDB.conf"
    environment:
      FHEM_UID: 6061
      FHEM_GID: 6061
      TIMEOUT: 10
      RESTART: 1
      TELNETPORT: 7072
      TZ: Europe/Berlin
#      CONFIGTYPE: configDB
    depends_on:
      - "mysql"
#      - "mqtt"

  portainer:
    image: portainer/portainer:latest
    restart: always
    command: -H unix:///var/run/docker.sock --no-auth
    networks:
      - net
    ports:
      - "9000:9000"
    environment:
      - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/portainer.crt
      - REGISTRY_HTTP_TLS_KEY=/certs/portainer.key
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data
      - ./certs/portainer.key:/certs/portainer.key
      - ./certs/portainer.crt:/certs/portainer.crt

  mysql:
#    image: mysql/mysql-server:5.7
    image: tobi312/rpi-mysql
    restart: always
    networks:
      - net
    expose:
      - "3306"
      - "33060"
    ports:
      - "3306:3306"
      - "33060:33060"
    command: --sql_mode=""
    volumes:
      - ./mysql/init.sql:/docker-entrypoint-initdb.d/fhem-init.sql
      - ./mysql/log:/var/log
      - ./mysql/data:/var/lib/mysql
      - ./mysql/mycustom.cnf:/etc/mysql/conf.d/custom.cnf
    environment:
      - MYSQL_RANDOM_ROOT_PASSWORD=yes
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Hallo nochmal,
ich habe noch mal etwas gebastelt und ich denke es ist teilweise schon richtig:

mit der jetzigen Konfig wird das udp zum smaem bereits durchgelassen

fhem_1       | 2019.12.27 17:55:42.302 4: SMAEM StromZaehler_Heizung - ###############################################################
fhem_1       | 2019.12.27 17:55:42.302 4: SMAEM StromZaehler_Heizung - ### Begin of new SMA Energymeter 1901401955 get data cycle ###
fhem_1       | 2019.12.27 17:55:42.302 4: SMAEM StromZaehler_Heizung - ###############################################################
fhem_1       | 2019.12.27 17:55:42.302 4: SMAEM StromZaehler_Heizung - discarded cycles since module start: 0
fhem_1       | 2019.12.27 17:55:42.303 4: SMAEM StromZaehler_Heizung - last update time set to: 27.12.2019 / 17:55:42
fhem_1       | 2019.12.27 17:55:42.320 4: SMAEM StromZaehler_Heizung - Blocking process with PID: 9206 started
fhem_1       | 2019.12.27 17:55:42.400 5: SMAEM StromZaehler_Heizung - OBIS metrics identified:
fhem_1       | 2019.12.27 17:55:42.400 5: SMAEM StromZaehler_Heizung - 144:0.0.0 -> Software Version -> 2.00.16.R
fhem_1       | 2019.12.27 17:55:42.400 5: SMAEM StromZaehler_Heizung - 1:1.4.0 -> SUM Wirkleistung Bezug -> 1225
fhem_1       | 2019.12.27 17:55:42.400 5: SMAEM StromZaehler_Heizung - 1:1.8.0 -> SUM Wirkleistung Bezug Zaehler -> 1935028440
fhem_1       | 2019.12.27 17:55:42.400 5: SMAEM StromZaehler_Heizung - 1:10.4.0 -> SUM Scheinleistung Einspeisung -> 0
fhem_1       | 2019.12.27 17:55:42.401 5: SMAEM StromZaehler_Heizung - 1:10.8.0 -> SUM Scheinleistung Einspeisung Zaehler -> 0
fhem_1       | 2019.12.27 17:55:42.401 5: SMAEM StromZaehler_Heizung - 1:13.4.0 -> SUM Leistungsfaktor -> 989
fhem_1       | 2019.12.27 17:55:42.401 5: SMAEM StromZaehler_Heizung - 1:2.4.0 -> SUM Wirkleistung Einspeisung -> 0
fhem_1       | 2019.12.27 17:55:42.401 5: SMAEM StromZaehler_Heizung - 1:2.8.0 -> SUM Wirkleistung Einspeisung Zaehler -> 0
fhem_1       | 2019.12.27 17:55:42.401 5: SMAEM StromZaehler_Heizung - 1:21.4.0 -> L1 Wirkleistung Bezug -> 904
fhem_1       | 2019.12.27 17:55:42.401 5: SMAEM StromZaehler_Heizung - 1:21.8.0 -> L1 Wirkleistung Bezug Zaehler -> 827374320


Nur habe ich jetzt kein Netwerk fuer die Container mehr. Docker-compose hat keine Adressen vergeben :-(
version 3.3 war im Beispiel vorgegeben und das gateway wurde angemeckert.

version: '3.3'

networks:
  net:
    driver: macvlan
    driver_opts:
      parent: eth0
    ipam:
      config:
        - subnet: 192.168.178.0/24
#          gateway: 192.168.178.1



pi@raspberrypi:~/docker-compose/fhem_2020 $ docker network inspect dd5fddf8e544
[
    {
        "Name": "fhem_2020_net",
        "Id": "dd5fddf8e5444aad542180a605b9166105609c9e2998c0c01284158c97c026aa",
        "Created": "2019-12-27T17:49:36.530886449+01:00",
        "Scope": "local",
        "Driver": "macvlan",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "192.168.178.0/24"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {
            "parent": "eth0"
        },
        "Labels": {
            "com.docker.compose.network": "net",
            "com.docker.compose.project": "fhem_2020"
        }
    }
]


Fuer Unterstuetzung waere ich Dankbar
     Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Volker Kettenbach

Hier die docker-compose.yml:


version: '3.7'

services:
  fhem:
    image: eu.gcr.io/kettenbach-it/fhem:latest
    build: .
    container_name: fhem
    restart: always
    networks:
      default:
        ipv4_address: 192.168.11.131
[...]


"volumes" und enviroment" habe ich weggelassen, da ich nicht das Original-Image verwende, sondern ein eigenes gebaute habe, welches anders funktioniert

Ferner rate ich für jeden, der nicht IT-Profi ist, von der Nutzung von Docker ab.
Es bringt für diesen Anwender keinerlei Vorteile aber jede Menge zusätzliche Komplexität.

Bitte für alles weitere zum Thema Docker hier weiter machen:
https://forum.fhem.de/index.php/topic,89745.0.html

MiVo69

Ein frohes neues Jahr an das Team,
vielen Dank nochmal für das geniale Modul.
Ich wollte nur noch mal eine kurze Rückmeldung geben:
Ich habe in meiner Anlage einen Home Manager und 3 Energy Meter laufen.
Für jedes Gerät habe ich auf meinem i5 Nuc ein Device angelegt.
Das Intervall habe ich testweise bei allen 4 Geräten auf 1s gestellt und bin begeistert.
Alles läuft völlig fehlerfrei in atemberaubender Geschwindigkeit.
Großes Kompliment & vielen Dank
Gruß Michael

DS_Starter

Vielen Dank Michael für die Rückmeldung. Es freut mich sehr, dass alles so reibungslos funktioniert.  :)

Ich wünsche dir und allen anderen Usern und Unterstützern ein gutes Jahr 2020 !

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Xguide

Hallo Heiko,

hast du vielleicht mal Zeit danach zu gucken?
Bin jetzt endlich komplett auf den Nuc umgezogen und die Meldung ist neu.

PERL WARNING: Use of uninitialized value in new at /opt/fhem//FHEM/77_SMAEM.pm line 625

Danke und ein gutes Wochenende,

Marcel


Gesendet von iPhone mit Tapatalk
FHEM 5.9 - Intel NUC i3 mit Proxmox im Stretch Container
HomeMatic - VCCU mit 2 x HM-LAN-CFG
Module: SMA Peripheries - Sonos - IPCam(s) - Philips Hue - Sprinkler - TabletUI - DBlog -

DS_Starter

Hallo Marcel,

diese Warnung gibt es bei mir nicht. In der Zeile 625 wird die Frequenz ausgewertet sofern vom EM geliefert.
Wird von meinem EM nicht geliefert.
Wie ist es bei dir und wird die Frequenz erkannt ? schau mal mit verbose 5.

Ansonsten sollte es keine Warnung mehr geben wenn du die Zeile 625 mal so erweiterst:


my $grid_freq = $obis->{"1:14.4.0"}/1000 if($obis->{"1:14.4.0"});


Probiers mal bitte. Eigentlich müsste es bei mir auch eine Warnung geben, da mein EM keine Frequenz liefert.
Ist aber nicht so.  ::)

Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Xguide

Hallo Heiko,

danke fürs nachsehen. Probiere ich am WE mal aus. Mir ist aufgefallen das mein neues Setup sensitiver mit Initialisierungsmeldungen umgeht als Jessie auf dem Pi. Wobei ich im Proxmox Host und Fhem Container auch Debian habe, allerdings Stretch.

Beim Durchsuchen der Readings habe ich auch keine Frequenz beim EM gefunden.

Besten Gruß


Gesendet von iPhone mit Tapatalk
FHEM 5.9 - Intel NUC i3 mit Proxmox im Stretch Container
HomeMatic - VCCU mit 2 x HM-LAN-CFG
Module: SMA Peripheries - Sonos - IPCam(s) - Philips Hue - Sprinkler - TabletUI - DBlog -

privat58

Hallo,
ich nutze das Modul seit einer ganzen Zeit und es läuft ohne Probleme.
Weiß jemand eine Möglichkeit, wie man einen Stromausfall erkennen kann? Die Readings bleiben auf dem alten Wert stehen und es kommt kein "timeout".
Zum Hintergrund. Ich habe eine PV-Anlage mit SMA SunnyBoy und einen Sunny-Island mit Batterie.
wenn Stromausfall ist, schaltet das ganze "Haus" um und es wird als Insel weiterversorgt. Der EnergyMeter ist noch vor der Umschaltbox eingebaut. Leider kann ich das reading "phase_1_uac" des SunnyBoy nicht nutzen, da derSunnyIsland ein Netz bereitstellt.
Selber merkt man oft erst nach einer ganzen Weile das Stromausfall ist, da alles normal weiter geht.
Steffen

Xguide

Hallo Heiko,

das hat den zyklischen Logeintrag eliminiert. Bitte im Standard aufnehmen!
Danke Marcel


Zitat von: DS_Starter am 07 Februar 2020, 21:14:01

Ansonsten sollte es keine Warnung mehr geben wenn du die Zeile 625 mal so erweiterst:


my $grid_freq = $obis->{"1:14.4.0"}/1000 if($obis->{"1:14.4.0"});


FHEM 5.9 - Intel NUC i3 mit Proxmox im Stretch Container
HomeMatic - VCCU mit 2 x HM-LAN-CFG
Module: SMA Peripheries - Sonos - IPCam(s) - Philips Hue - Sprinkler - TabletUI - DBlog -

DS_Starter

Hallo Marcel,

habe es gefixt und eingecheckt. Ist morgen früh im Regelupdate.

@Volker ... übernimmst du die kleine Änderung bitte wieder in dein Repo ?

Danke und LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter