neues Modul: SIEMENS Anbindung / S7 / Siemens Logo

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

Vorheriges Thema - Nächstes Thema

charlie71

Hallo Thorsten,

um auf Änderungen eines Datenpunktes reagieren zu können, kannst Du ein Notify verwenden.
Das Notify kann beliebigen Code ausführen und somit auf Infos zum whats app modul schicken.

lG
Charlie71

Komet16

Ah Danke!

Werde ich darüber Informieren! Falls ich noch Fragen habe werde ich hier wohl noch mal Fragen müssen!

Danke!

Gruß an alle!

charlie71

Hallo

@Zicki nochmals vielen Dank für deinen Hinweis. Basierend auf deinen Vorschlag gibt es nun eine neue Version, bei der AWrites auch bei S7 200 und zur S7 300 funktionieren sollten.
Bei den Logos hat es bereits vorher funktioniert.
Neue Version ist bereits eingecheckt.

lG
Charlie71

Humidor

Hi,
versuche aktuell Temperatur und Luftfeuchtedaten zur SPS in einen DB zu übertragen. Die eigentliche Abfrage auf Temperatur funktioniert, allerdings ist der state, welcher in den DB geschrieben wird, trotz eingetragener Temperatur auf "0". Dementsprechend kommt im DB auch nur eine 0 an. Beschreibe ich über den set Befehl manuell, wird der entsprechende Wert auch im DB gesetzt, die Kommunikation funktioniert also (Siehe Anhang).
Hat jemand eine Idee, was ich falsch mache?
Danke vorab!
Grüße

charlie71

Hallo Humidor

wie setzt du den Wert von Temp_SZ.
Hinweis: dein Stateformat gibt Infos von LaCrosse_28 und nicht von Temp_SZ.

lG
Charlie71

zicki

Hallo charlie71

habe die neue Version gleich mal getestet  :) funktioniert mit der S7 200.

Gruß Zicki
Raspberry PI 2 Jessie mit FHEM; FritzBox 7580 FritzOS 06.83; S7 200 für Heizung und Solar;AVR-NET-IO informiert die S7 200 über das Wetter von morgen und die aktuellen Temperaturen (5x 1-Wire)im Solarspeicher sowie 1x AVR-NET-IO mit Ethersex 10x 1-Wire Raumtemperaturen und Status Fensterkontakte

Humidor

#771
Hallo Charlie,

ich ging davon aus, dass ich Temp_SZ brauche, um das Reading vom Sensor auszulesen. Da Temp_SZ ein AWrite ist, war ich der Meinung, dass der Wert vom Sensor dort automatisch eingetragen wird. Hab' da wohl irgendeinen Deckfehler drin  :-[

Brauche da wohl ein notify für :D

EDIT:

Mit eingefügtem Notify wird mir erfolgreich ein neues Reading in Temp_SZ gesetzt, soweit so gut, es muss ja in state geladen werden, wenn ich also setstate eingebe, anstatt setreadings, steht weiterhin eine "0" drin.

LaCrosse_28:temperature.* {   fhem("setreadings Temp_SZ $EVENT")
}

charlie71

Hallo Humidor

ich denke jetzt sehe ich dein Problem.
Readings sind die tatsächlichen wert die aus der SPS geladen werden.
Wenn du einen analogen Datenpunkt beschreiben möchtest funktioniert das wie folgt:
ZB:
set Temp_SZ 55.7

dh du musst dein notify ein wenig anpassen.
lG
Charlie71

PS: wenn nicht klappt poste bitte deine notify config.

Humidor

Hallo Charlie,

das habe ich soweit hinbekommen, aber ich möchte den analogen Datenpunkt mit dem aktuellen Wert (in meinem Fall die Temperatur), beschreiben. Dieser Wert kommt von einem Funk Sensor, und wird in ein Reading geschrieben. Das Reading möchte ich auslesen und zur SPS schicken.

define LaCrosse_28 LaCrosse 28
attr LaCrosse_28 IODev myJeeLink
attr LaCrosse_28 alias Schlafzimmer Temperatur
attr LaCrosse_28 group Temperaturen
attr LaCrosse_28 room Schlafzimmer

define Temp_SZ S7_AWrite db 5 24 u16
attr Temp_SZ IODev SPS
attr Temp_SZ event-on-change-reading state
attr Temp_SZ room Schlafzimmer
attr Temp_SZ stateFormat {sprintf("%.1f", ReadingsVal ("LaCrosse_28","temperature",0))." °C"}

define Temp_SZ_in_dummy notify LaCrosse_28:temperature.* {   fhem("set "hier_muss_ich_es_doch_beschreiben_oder?")\
}\

attr Temp_SZ_in_dummy group Temperaturen
attr Temp_SZ_in_dummy room Schlafzimmer

charlie71

Hallo Humidor,

Das Notify hängt vom Event des LaCrosse_28 ab (Siehe auch http://fhem.de/commandref.html#notify).
Am besten du schaust dir im Fehm "Event Monitor" das Event von LaCrosse_28.
Dann kannst du beurteilen welcher Teil des Events wichtig ist .

Beispiel wenn der 2. Teil des Events die Temperatur enthält
define Temp_SZ_in_dummy notify LaCrosse_28:temperature.* set Temp_SZ  $EVTPART1

lG
Charlie71

PS: Wenn es noch immer Probleme gibt poste bitte einen Auszug aus dem Event Monitor der infos von LaCrosse_28 enthält.

Humidor

Hallo Charlie

leider bisher alles erfolglos. In der logfile wird "You have to enter a numeric value: 0 - 65535" ausgeben. Auszug aus dem Event Monitor anbei...

charlie71

Hall Humidor,

also das Notify funktioniert. Jedoch versuchst du gerade eine float zahl auf eine Integer Variable auf der S7 zu schreiben und das geht nicht.
Lösungsvorschläge:
1) Du änderst den S7 Datentyp auf float
2) Du versuchst den Datentyp auf fhem Seite zu konvertieren:
define Temp_SZ_in_dummy notify LaCrosse_28:temperature.* {my $value = ceil($EVTPART1);;fhem ("set Temp_SZ $value");;}


lg
Charlie71

Humidor

Hallo Charlie,

danke für deine Hilfe! Die Temperatur wird nun als float von FHEM in ein Doppelwort meines DB's übertragen und kann nun als Gleitpunktzahl weiterverarbeitet werden. :)
Da ich jetzt noch gerne die Luftfeuchte übertragen würde, erstellte ich ein neues Notify. Allerdings wird nichts in das S7_AWrite eingetragen.

--> notify LaCrosse_10:humidity.* set Hum_WZ $EVTPART2

EVTPART2, da im Eventmonitor als nächstes, nach Temperatur, Humidity kommt?

Grüße

charlie71

Hallo Humidor,

nein, über "LaCrosse_10:humidity.*" wird das Event gefiltert. Und mit $EVTPART0, $EVTPART1, ...
wählst du den Teil der Eventmeldung aus.
Nochmals die Empfehlung lies dir die Notify Beschreibung in der Commandref durch (http://fhem.de/commandref.html#notify), dort ist das beschrieben.
Versuchs mal mit
define XXX notify LaCrosse_10:humidity.* set Hum_WZ $EVTPART1

lg
Charlie71

Humidor

Hallo Charlie,

danke für den Hinweis. Es funktioniert nun. Die Beschreibung werde ich mir durchlesen.

Grüße