neues Modul: SIEMENS Anbindung / S7 / Siemens Logo

Begonnen von charlie71, 12 August 2014, 15:33:23

Vorheriges Thema - Nächstes Thema

pc1246

#45
Hallo Charlie und Christian
Es ist echt toll was Ihr hier macht! Aber ich scheitere wieder an der Libnodave! Eure Beschreibungen sind etwas rudimentaer!
Wohin muss ich die gepackte libnodave kopieren?
Wohin entpackt sich das?
Wo soll der Patch hin?
Was bedeutet "patch -p0 < ../fhem_S7/libnodave.patch"? Bzw, in welchem Verzeichnis bin ich und wo soll der Patch liegen?
Da Charlie nie auf den Patch eingeht, wuerde auch seine libnodave.so reichen, sofern ich einen RPI habe?
Es tut mir echt leid, aber sehr viele von uns wohnen halt nicht in Linux, und sind dann echt aufgeschmissen!

Die neuen Parameter hatte ich auch schon entdeckt, sind aber leider auch nicht so wirklich dokumentiert! Aber das habe ich noch hinbekommen!
Gruss Christoph

Edit: Ich habe es jetzt hinbekommen (mit dem Patch), wuerde es aber trotzdem cool finden, wenn Ihr das etwas klarer beschreibt!
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

charlie71

Hallo pc1246,

in der V1.2 liegt bereits eine einsatzbereite libnodave.so dabei. Diese muss nur noch in den bin Verzeichnis kopiert werden.
Es sollte somit kein patchen notwendig sein.

Zur Info: Es war nicht Notwendig den eigentlichen Code der LibnoDave zu patchen, sondern im perl Interface wraping wurde auf ein paar Funktionen vergessen, die habe ich einfach hinzugefügt.

lG
Charlie71

Porsti

#47
Hallo Charlie71,

habe mal ein bischen mit der neuen Version gespielt.
Ausgänge lesen klappt gut,
Ausgänge schreiben klappt auch
nur dem den Netzwerkeingängen bekomme ich es noch nicht hin, auch ohne Fehlermeldung
N1 = db1.dbx1246.0
spreche es über define mylogo_N1_w S7_DWrite DB 1 9968 an
aber leider kommt nichts auf der Logo an

Gruß
Thomas
____________________________________
fhem 6.2  auf Raspberry 3b
Homematic HM-CC-RT-DN / HM-TC-IT-WM-W-EU / HM-SEC-SCo / HM-LC-SW1-PL2
SIGNALduino, KNX (Merten, MDT, Siemens, ABB)

charlie71

Hallo Thomas,

kannst du bitte mal eine S7 Modul konfigs posten.
Danke
Charlie71

Porsti

#49
Hallo Charli,

was brauchst du denn genau?

Das ist der Auschnitt aus der config für die logo:

# Anbindung Siemens Logo
define mylogo S7 2 0 192.168.105.15 0 0 102 2 960
attr mylogo ReadDB-Config 1 1064 190 5
attr mylogo ReadOutputs-Config 1 0 2 10
attr mylogo WriteDB-Config 1 1064 190
define mylogo_Q1 S7_DRead outputs 1 0
attr mylogo_Q1 alias Ausgang 1
attr mylogo_Q1 room Logo
define mylogo_Q2 S7_DRead outputs 1 1
attr mylogo_Q2 alias Ausgang 2
attr mylogo_Q2 room Logo
define mylogo_Q3 S7_DRead outputs 1 2
attr mylogo_Q3 alias Ausgang 3
attr mylogo_Q3 room Logo
define mylogo_Q4 S7_DRead outputs 1 3
attr mylogo_Q4 alias Ausgang 4
attr mylogo_Q4 room Logo
define mylogo_Q2_w S7_DWrite DB 1 8513
attr mylogo_Q2_w alias Gelbe LED
attr mylogo_Q2_w room Logo
attr mylogo_Q2_w webCmd ON:OFF
define mylogo_N1_w S7_DWrite DB 1 9968
attr mylogo_N1_w alias Netzwerk N1
attr mylogo_N1_w room Logo
attr mylogo_N1_w webCmd ON:OFF


Gruß
Porsti
____________________________________
fhem 6.2  auf Raspberry 3b
Homematic HM-CC-RT-DN / HM-TC-IT-WM-W-EU / HM-SEC-SCo / HM-LC-SW1-PL2
SIGNALduino, KNX (Merten, MDT, Siemens, ABB)

charlie71

Hallo Porsti,

ich hab mir mal deine Konfig angeschaut.
folgendes ist mir aufgefallen:

Du definierst den selben Speicherbereich auf der SPS zum Lesen und zum schreiben (1064 190).
Dass sollte so nicht sein. Warum? Vom Lesebereich ist die SPS der Master und verwaltet den Speicher. Vom Schreibbereich ist das FHEM der Master. Das Problem ist, dass vom Schreibbereich eine lokale lokale Speicherkopie im Modul bleibt und bei jedem Schreibbefehl zuerst dieser lokale Speicher aktualisiert wird und im zweiten Schritt der ganze Speicherblock rausgeschrieben wird. Wenn jedoch wie bei dir 2 gleiche Speicherbereichskonfigs verwendet werden, wird auch der Lesebereich der SPS überschrieben!

Bitte passe deine Konfig an.
Versuche den Schreibvorgang nochals und poste dann dein logfile.

lG
Charlie71

Porsti

Hallo Charlie71,

habe den Leseauftrag auskommentiert da dieser zur Zeit nicht benutzt wird.
Für das Verständnis des Logfiles:

FHEM gestartet und danach den N1 auf ON gesteuert und kurz danach auf OFF.
Bei der Logo ist dieser leider nicht angekommen.
Das schreiben auf den Q2 klappt aber ohne Probleme.

Log:
2014.12.04 07:40:24 1: Including fhem.cfg
2014.12.04 07:40:24 3: telnetPort: port 7072 opened
2014.12.04 07:40:24 3: WEB: port 8083 opened
2014.12.04 07:40:24 3: WEBphone: port 8084 opened
2014.12.04 07:40:24 3: WEBtablet: port 8085 opened
2014.12.04 07:40:25 2: eventTypes: loaded 20 events from ./log/eventTypes.txt
2014.12.04 07:40:25 3: maxPDUlength was set to: 960
2014.12.04 07:40:25 3: Communicationtype was set to 2
2014.12.04 07:40:25 3: connect to PLC: 0
2014.12.04 07:40:25 1: returnmessage PLC: 0=ok
2014.12.04 07:40:25 1: Including ./log/fhem.save
2014.12.04 07:40:25 1: usb create starting
2014.12.04 07:40:26 1: usb create end
2014.12.04 07:40:26 2: SecurityCheck:  WEB,WEBphone,WEBtablet has no basicAuth attribute. telnetPort has no password/globalpassword attribute.  Restart FHEM for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2014.12.04 07:40:26 0: Server started with 16 defined entities (version $Id: fhem.pl 6913 2014-11-08 10:32:44Z rudolfkoenig $, os linux, user bananapi, pid 2594)
2014.12.04 07:40:36 3: Writebuffer:  00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
2014.12.04 07:40:36 3: s: 182
2014.12.04 07:40:36 3: Write Bytes to PLC: daveDB, 1,1064 , 190, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 01, 00, 00, 00, 00, 00, 00, 00
2014.12.04 07:40:40 3: Writebuffer:  00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 01, 00, 00, 00, 00, 00, 00, 00
2014.12.04 07:40:40 3: s: 182
2014.12.04 07:40:40 3: Write Bytes to PLC: daveDB, 1,1064 , 190, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
____________________________________
fhem 6.2  auf Raspberry 3b
Homematic HM-CC-RT-DN / HM-TC-IT-WM-W-EU / HM-SEC-SCo / HM-LC-SW1-PL2
SIGNALduino, KNX (Merten, MDT, Siemens, ABB)

charlie71

Hallo Porsti,

ich denke, dass hier die libNoDave Funktion aufgerufen wird. Somit vermute ich das Problem somit entweder in der Logo bzw in der Config.
Versuch bitte die Writer Konfig so anzupassen dass nur die Bytes 1246 - 1261 geschrieben werden, es könnte sein dass du mit deiner Konfig die maxPDULength überschreitest.
(die maxPDULength liegt angeblich für die 0BA8 bei 250, leider konnte ich keine offizielle Doku dafür finden)

Anmerkung: Ich denke dass es möglich ist direkt auf einen Ausgang zu schreiben, bitte bedenke dass hier die SPS jederzeit den Zustand überschreiben darf.

lG
Charlie71

pc1246

Hallo Charlie
Wenn ich bei mir zwei Read Configs anlege, funktioniert nur die eine!

define S7 S7 2 0 192.168.178.233 0 2 102 5
attr S7 ReadDB-Config 100 0 100 5
attr S7 ReadInputs-Config 4 0 20 5
attr S7 room IO_DEV
define DB100_DBD20 S7_ARead db 100 20 u32
attr DB100_DBD20 room S7
define DB100_DBB22 S7_ARead db 100 22 u8
attr DB100_DBB22 room S7
define DB100_DBB10 S7_ARead db 100 10 u16
attr DB100_DBB10 room S7
define E4_6 S7_DRead inputs 4 47
attr E4_6 room S7


In diesem Fall nur das Bit! Da funktioniert die Adressierung auch noch nicht, bzw. habe ich es wahrscheinlich noch nicht verstanden!

Das log sieht dann ungefaehr so aus:
2014.12.04 22:20:31 4: S7: GetUpdate called ...
2014.12.04 22:20:31 4: S7: readFromPLC  129,4,0,20
2014.12.04 22:20:31 5: S7 dispatch A inputs 4 0 20
2014.12.04 22:20:31 5: S7_ARead_Parse A inputs 4 0 20
2014.12.04 22:20:31 4: S7_ARead: Parse no client found (S7) ...
2014.12.04 22:20:31 5: S7 dispatch D inputs 4 0 20
2014.12.04 22:20:31 5: S7_DRead_Parse D inputs 4 0 20


Was ist falsch? PDU habe ich nicht definiert, da automatisch auf 960 eingestellt wird!
Gruss Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

thmarx

Hallo,
ich wollte jetzt auch mal wieder probieren. Leider läuft bei mir schon die neue libnodave nicht:
Ich habe libnodave.so und nodave.pm aus dem .zip V1.2 auf den raspi kopiert. Dann ist aber keine Kommunikation mit der Logo mehr möglich. Auch das Testprogramm aus dem libnodave-paket kann nicht mehr aus der Logo lesen. Wenn ich libnodave wieder auf 0.8.4.6 downgrade klappt das Testprg wieder, aber fhem jetzt nicht mehr...
Hat wer irgendwelche Tipps was ich noch probieren kann?

Gruß Thomas

Porsti

Hallo Charlie71,

habe es gerade hinbekommen.
Das Problem lag auf der Seite der Logo.

Der Netzwerkeingang muss dort speziell auf die IP des FHEM eingestellt werden. (Bild im Anhang)
Bei der App die ich bis jetzt noch genutzt habe musste dieses nicht gemacht werden und es klappte ohne Probleme.

Vielleicht kannst du das in deine readme mit aufnehmen als hinweis für die 0BA8.

Gruß
Porsti


PS: Danke für deine unterstützung
____________________________________
fhem 6.2  auf Raspberry 3b
Homematic HM-CC-RT-DN / HM-TC-IT-WM-W-EU / HM-SEC-SCo / HM-LC-SW1-PL2
SIGNALduino, KNX (Merten, MDT, Siemens, ABB)

thmarx

Hallo,ich komme leider nicht wirklich weiter. Habe nochmal alles neu aufgesetzt, libnodave 0.8.5.1 kompiliert, dann libnodave.so und Nodave.pm mit denen aus dem .zip 1.2 ersetzt. Die 44_S7* habe ich ins FHEM kopiert. Dann fhem mit minimaler .cfg gestartet.

Nach define logo19 S7 2 0 192.168.178.19 1 0 102 2 960
wird "connected to PLC" gemeldet.

Wenn ich versuche ein attr logo19 zu definieren (egal welches, z.b. attr logo19 ReadOutputs-Config 1 0 2 10) stürzt fhem ab. Also eigentlich läuft es mit 100% CPU-Last, lässt sich nicht stoppen und schreibt das logfile nicht weiter. Die letzten logfile-Einträge lauten:
2014.12.05 16:51:31 4: S7: GetUpdate called ...
2014.12.05 16:51:31 4: S7: readFromPLC  130,1,0,2


Wäre schön, wenn jemand noch eine Idee hat...

Gruß Thomas

Benbaeck

Habe genau dasselbe Problem wie Thomas.
Bei
define logo S7 2 0 192.168.178.20 1 0 102 960

stürzt mir Fhem direkt nach dem start ab.

charlie71

Hallo

@Porsti:
Ich hab mir mal in der Siemens SoftComfort die Netzwerkkonfiguration für die 0BA8 angesehen. Hier habe ich keine Änderungen zur 0BA7 entdecken können (außer die neuen VM's).

Folgende Punkte sind für die Logo Netzwerkkonfig wichtig:
1) Logo ist typischerweise TCP Server
2) Auf der Logo ist zu konfigurieren dass sie entweder Connections von allen IP Adressen akzeptiert oder es muss eine spezifiziert werden.
(bitte um weitere Vorschläge)

Weiters würde ich dir empfehlen, dass Du deine Konfig überarbeitest: Die Read Config soll ausschließlich Netzwerkausgänge, Eingänge bzw Ausgänge einlesen (Wobei ich mir über den Nutzen der Eingänge nicht sicher bin).
Die Write Config sollte ausschließlich auf Netzwerkeingänge schreiben, es macht keinen Sinn auf den Datenbereich der normalen Eingänge etwas zu schreiben. Ich kann mir hier sogar vorstellen, dass dies den Betrieb der Logo stören könnte.

lG
Charlie71

charlie71

Hallo

@Thomas
@Christoph

Bitte könnt ihr posten auf welcher Umgebung das Problem besteht (ARM oder X86).

Danke
Charlie71