neues Modul: 98_mypowerrouter.pm (Ersatz für Cloudservice mypowerrouter.com)

Begonnen von macfly, 02 Februar 2021, 12:21:16

Vorheriges Thema - Nächstes Thema

-TK-

Ich habe selbst eine Anlage mit Nedap Powerroutern und interessiere mich aus diesem Grund für das Modul. Sind für die Funktion des Moduls etwaige andere Abhängikeiten notweding damit es funktioniert? Ich habe die Moduldatei heruntergeladen und in den Order /fhem/FHEM/ kopiert, das Modul wird mir aber nicht im FHEM Frontend angezeigt. Ich habe schon "reload 98_mypowerrouter" versucht. Der Befehl wird aber ohne Ergebnis oder Fehlermeldung durchgeführt.

Eine weitere Frage zum Modul selbst. Kann ich damit auch die Daten von mehreren Powerroutern abgreifen und getrennt anzeigen lassen?

macfly

define <name> mypowerrouter port

entweder port=80, dann muss logging1.mypowerrouter.com auf deine fhem-box zeigen. Oder einen anderen Port, dann muss irgendein anderer Rechner bei dir die Posts des Nedap annehmen und an deine Box weiterleiten (siehe proxy-script php).

Das Modul selber nimmt nur für einen nedap die posts an. Ich habe da keinen Sinn drin gesehen, mehrere Nedaps gleichzeitig zu unterstützen ..

hallo000de

wäre es dann so in Dnmasq (Umleitung)?

/etc/dnsmasq.conf

server=/logging1.powerrouter.com/127.0.0.1

(dann würde der Namen auf zb. 127.0.0.1 umgeleitet/pi-dnsmasq-adresse)

Beste Grüße

Richtig?



macfly

Zitat von: hallo000de am 08 Februar 2021, 14:03:13
wäre es dann so in Dnmasq (Umleitung)?

/etc/dnsmasq.conf

server=/logging1.powerrouter.com/127.0.0.1

(dann würde der Namen auf zb. 127.0.0.1 umgeleitet/pi-dnsmasq-adresse)

Beste Grüße

Richtig?

Nein, das ist recht sinnfrei. Damit sagst du dnsmasq, dass alle Anfragen nach logging1.powerrouter.com von dem Server localhost beantwortet werden sollen. Die Antwort hast du damit aber noch nicht gegeben.


Beispielkonfiguration, mein Netz lautet 192.168.42.0/24, der server, auf dem dnsmasq läuft, heißt 192.168.42.3, die domain lokal bei mir ist 4t.to.lan:

### /etc/dnsmasq.conf
bogus-priv
filterwin2k
expand-hosts
domain=4t.to.lan
clear-on-reload
listen-address=192.168.42.3
interface=eth0
bind-interfaces


server=192.168.42.3

dhcp-leasefile=/var/lib/dnsmasq.leases

# Subnet mask
dhcp-option=1,255.255.255.0

# Default GW
dhcp-option=3,192.168.42.1

# Name Server
dhcp-option=6,192.168.42.3,8.8.8.8,8.8.4.4


dhcp-authoritative
dhcp-range=192.168.42.110,192.168.42.199,255.255.255.0,48h



damit läuft der dnsmasq als dhcp-server, vergibt als Nameserver "192.168.42.3, 8.8.8.8, 8.8.4.4", als Gateway "3,192.168.42.1" Wenn bei dir der dnsmasq schon korrekt läuft, dann lass das so, nimm aber die Zeile von dir (server=/logging1.powerrouter.com/127.0.0.1) raus.

Damit die Antwort auf logging1.powerrouter.com richtig ist, müsstest du noch die /etc/hosts anpassen:
### /etc/hosts
192.168.42.3    logging1.powerrouter.com

hier muss die IP rein, die die POSTs des Wechselrichters annehmen soll. Wenn du auf dem fhem-server keinen Webserver auf port80 hast, kannst du das Modul auf port 80 konfigurieren und diese Hosts-IP verwenden.


Meine resolv sieht so aus:
### /etc/resolv.conf
nameserver 127.0.0.1
nameserver 192.168.42.1
nameserver 8.8.8.8



Zum prüfen kannst du von einem beliebigen Rechner/handy/tablet mal die IP von logging1.powerrouter.com auflösen. Wenn deine FHEM-Ip rauskommt, ist alles richtig.

hallo000de

Danke für die Info, nur ich dachte eher an einen zusätzlichen DNS dienst hinter einer Fritzbox DHCP bleibt bei der Fritzbox

-Raspi eine feste IP vergeben
-dnsmasq installieren
-dnsmasq/resolvconf konfigurieren
   /etc/dnsmasq.conf

sudo vim /etc/resolvconf.conf

name_servers=127.0.0.1 (als erstes)

damit die Fritzbox weiter als Dns-Server funktioniert

name_server=192.168.2.1 (Fritzbox IP, als zweites)

sollte dann so ausschauen:

1 # Configuration for resolvconf
2 # See resolvconf.conf(5) for details
3
4 resolv_conf=/etc/resolv.conf
5
6 name_servers=127.0.0.1
7 name_servers=192.168.2.1
8
9 # Mirror the Debian package defaults for the below resolvers
10  # so that resolvconf integrates seemlessly.
11 dnsmasq_resolv=/var/run/dnsmasq/resolv.conf
12 pdnsd_conf=/etc/pdnsd.conf
13 unbound_conf=/var/cache/unbound/resolvconf_resolvers.conf

nächstes Hostnamen konfigurieren

sudo vim /etc/hosts

dann

192.168.2.xx (Adresse des PI)

sudo service dnsmasq reload


Jetzt muss man doch die DHCP- Einstellungen in der Fritzbox änderen

Unter Netzwerkeinstellungen-IP Adressen

Localer DNS-Server wäre dann: 192.168.2.xx (Adresse des PI)

dann die Umleitung in dnsmasq :

/etc/dnsmasq.conf

server=/logging1.powerrouter.com/127.0.0.1

nur so ein Gedanke...........


















MuTi

Hallo macfly,
auch ich bin von der Abschaltung Nedap betroffen.
Nun möchte ich eigentlich nur wissen, ob meine Anlage mit beiden Strings auch immer noch läuft.
Also welche Leistung pro String produziert wird.
Ob man das mit Hilfe Deines Moduls erkennen kann?


Leider kenn ich mich nur mit linux, und einigen Sprachen aus, nur das FHEM ist für mich absolut Neuland.
Bei meiner Suche nach einem Quick-Start für Einsteiger bin ich nicht weiter gekommen.

Auf meinem PI läuft PI.Hole, die Adress-Übersetzung klappt schon!

Wie darf ich mir das mit dem Modul 98_mypowerrouter.pm vorstellen?
Kann man in einem Browser die NEDAP-Daten sehen?

Danke für weiter Info

macfly

Das Modul nimmt die Kommunikation des Wechselrichters an und speichert die Daten. Nicht mehr, nicht weniger.
fhem kann dann mit der ganzen Magie von fhem daraus diagramme, alarme, wenn-dann usw. machen.

macfly

hier einige diagramme (die man aber in fhem sich selber zusammenklicken kann/muss)


MuTi

Hallo macfly,
da habe ich nun FHEM installiert,
Dein Modul 98_mypowerrouter.pm nach fhem/FHEM/ kopiert.
Die Datei fhem.cfg erweitert mit Text:
define NEDAP mypowerrouter 80

Dann stand in der Logdatei
Can't locate DateTime.pm in @INC

daraufhin habe ich installiert:
apt-get install libdatetime-perl
apt-get update
apt-get upgrade

Nun läuft das Web-Frond-End nicht mehr, und in ehfm/log/fhem-2021-02.log steht:
2021.02.10 16:14:37 1: Including fhem.cfg
2021.02.10 16:14:43 1: PERL WARNING: main::translate() called too early to check prototype at ./FHEM/98_mypowerrouter.pm line                       9.
Undefined subroutine &main::TcpServer_Open called at ./FHEM/98_mypowerrouter.pm line 35.

Wenn ich die define-Zeile kommentiere und den Server neu starte, läuft das Front-end wieder (Last?)

Kannst Du mir bitte Starthilfe geben
Vielen Dank schon mal
und auch für das Modul

macfly

ich habe ein Update hier angehängt, das sollte den Fehler mit TcpServer_Open beheben.

macfly

kleine Anmerkung meinerseits:

man editiert nicht die fhem.cfg
nie
es gib keinen Grund dazu.

du gibts die Befehle (define NEDAP mypowerrouter 80) in die Eingabezeile im Webbrowser ein, oben das weiße Wingabefeld.

MuTi

Danke,
kannst Du mir eine Einsteiger-Hilfe nennen?
Mit welchen Mitteln macht man die Daten sichbar?


MuTi

nun steht unter der weisen Zeile:
NEDAP: Can't open server port at 80: Permission denied
d.h. da feht noch ein Server, der NEDAP heisst ??

Kannst Du mir nicht (kurz) erklären wie das mit dem Modul funktioniert.

Das Nedap-Teil sendet nun durch die maskerade auf den raspbery.
Wer nimmt die Daten entgegen?

macfly

port 80 ist privilegiert. Wenn du direkt unter fhem diesen Port öffnen willst, muss fhem als root laufen (don't do).
definiere einen anderen port (10101) und nutz mein proxy-php-script aus dem ersten Post.

entweder legst du das im document-root eines apache/nginx/lighttpd als event.json und logs.json ab, oder du startest das händisch mit

/usr/bin/php -S <IP_deiner_linux_box>:80 proxyscript.php

bitte vorher im script fhemport und fhemserver anpassen.


nedap ---> linux_running_proxyscript.php(port 80) --> linux_running_fhem(port 10101)


MuTi

Hallo macfly,
so weit nun alles klar - für den Anfang.
Auf dem PI läuft lighttpd und nun habe ich erstmal den Port 80 frei gemacht.
Zu Deinem Skript proxyscript.php:
zu Fuß gestartet und alles klar, aber
DU schriebs:  mein proxy-php-script .. legst .. das .. als event.json und logs.json ab
Da muss ich mich outen: das sagt mir nix
Kann ich das im 'lighttph' automatisch starten oder muss ich das ins System integrieren (cron)?
Wieder mal Danke