Anbindung von Saia-Steuerung mittels CGI-Befehlen

Begonnen von Antimaster, 11 Januar 2017, 09:55:14

Vorheriges Thema - Nächstes Thema

Antimaster

Hallo,
Ich habe ein Möglichkeit gefunden, mit Steuerungen der Firma Saia Burgess zu kommunizieren. Saia Burgess produziert SPS-Steuerungen für die Gebäudeautomation. Die Steuerungen bieten neben einer grafischen Programmierung auch einen Web-Server, der für die Visualisierung genutzt werden kann. Ich arbeite bereits seit Jahren mit diesen Steuerungen. Die Steuerungen können mit Steckkarten auch mit Modbus, MBUS, KNX, BACnet... kommunizieren. Ich bin gerade dabei meine Haus zu automatisieren und würde dabei gerne die komplizierte Logik gerne mit einer Saia-Steuerung programmieren. Die Abfrage zwischen Web-Visualierung und Steuerung erfolgt mit CGI-Befehlen. Erste Tests haben ergeben, dass die Steuerung locker 1000 Befehle pro Minute verarbeiten kann.
Mit dem HTTPMod Befehl habe ich bereits Register und Flags auslesen können. Ich bin leider noch nicht so fit in FHEM, deshalb jetzt meine Fragen.
- ich erhalte vom HTTPMod für das reading01 einen Wert von 17.0. Wie kann ich diesen Wert jetzt z.B. als Sollwert für die MAX-Heizungsthermostat verwenden?

- wenn sich eine Temperatur ändert (event-on-change?) soll ein CGI-Befehl ausgeführt werden und der neue Wert an die Steuerung gesendet werden. Wie kann ich das Programmieren?

- Der Plan ist, dass Ist-Werte nur bei Änderung übertragen werden. Sollwerte / Stellsignale werden zyklisch übertragen. Kann der Befehl HTTPMod auch schneller als 1s ausgeführt werden z.B. 100ms um eine schnellere Reaktionszeit zu ermöglichen?

Vielleicht kannn mir jemand helfen, die Kommunikation so zu entwickeln, dass sie einfach umzusetzen ist. Der Befehl ist sehr einfach aufgebaut. Im Detail weiß ich den Befehl gerade nicht aber vom Prinzip schreibt der Befehl http://IP-Adresse-Saia/write.exe?R1000,d+23 das Register 1000 auf den Wert 23.

spooy99

#1
Hallo - es wäre wunderbar Infos aus den Saia-Steuerungen zu erhalten (habe eine für Heizung und eine für Lüftungsanlage). Ich wäre also mit dem Auslesen einiger Werte bzw. Fehlermeldungen schon zufrieden. Dann noch Werte über Fhem zurückzuschicken ... ein Traum. Leider kann ich zu deinen Programmier-Fragen nicht helfen. Aber zum Testen/Probieren stell ich mich gerne zur Verfügung!
Spooy

EDIT: also die Solltemperatur eines Homematic-Stellantriebes kann mit Set <Stellantrieb_Clima> desired-temp 17 einfach gesetzt werden (xx_Clima ist Channel 04 - Hoffe ist bei Max genauso).

Über ein notify oder über DOIF kann dann bei Änderung eine weitere Aktion ausgelöst werden...


FHEM auf Debian unter Hyper-V, HMLAN und KNX
Sonst: Fritzbox, Yamaha RX-V2065, Fröling S4 per MQTT, Enigma, Robonect, Hue, LG

Antimaster

Mit dem HTTPMod Befehl kann ich schon Daten auslesen. Leider kann die Saia keine direkten Set-Befehle absetzen.
Kann ich die desired-temp nicht an ein Reading knüpfen?

CoolTux

Hallo Antimaster,

Ich schlage vor das Du Dir das Einsteiger PDF einmal durch liest, denn da werden Deine Fragen beantwortet. Insbesondere wie Du Events (dein reading01 ändert sich) triggerst (Notify) und dann entsprechende Aktionen aus führst.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Antimaster

Hab es jetzt erstmal so gelöst:

define NotifyTCP notify R1000|Saia:R1000:.* {RegToSaia("Wz.Heizung_1","temperature","R1000")}


Der HTTPMod-Befehl liest das Register 1000 aus. Wenn sich der Wert ändert, wird mit der Sub-Routine RegToSaia die gemessene Temperatur von Wohnzimmer Heizung 1 zurück an das Register 1000 geschrieben. Macht zwar noch keinen Sinn aber so kann ich sehen wie lange ein durchlauf dauert ;-)
Wenn man den notify dann für alle Werte nutzt, die man übertragen will, kann das schon funktionieren.
Das Lesen der Werte gefällt mir aber noch garnicht, da der HTTPMod-Befehl nur alle 10 Sekunden ausgeführt werden kann, was z.B. für Lichtschaltungen eine zu lange Verzögerung ist.

Die Sub-Routine ist wie folgt aufgebaut:
sub RegToSaia($$$)
{
my ($device,$datapoint,$address) = @_;
my $temperature=(ReadingsVal("$device","$datapoint","-1"))*10;
SAIA_Msg("10.42.42.145" , "$address" , "d", "$temperature")
}


Die Routine SAIA_Msg arbeitet mit dem Befehle GetHttpFile.
Kann das bei häufigen Anfragen zu Problemen führen?

CoolTux

Entweder Routine welche mittels at alle sekunde aufgerufen wird oder ein eigenes Modul muß herhalten.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

spooy99

Hallo Antimaster,

würdest Du die Routine  SAIA_Msg noch erläutern und zur Verfügung stellen?!

Danke!
Spooy
FHEM auf Debian unter Hyper-V, HMLAN und KNX
Sonst: Fritzbox, Yamaha RX-V2065, Fröling S4 per MQTT, Enigma, Robonect, Hue, LG