Dimmer/Thermostat über Homebridge und S7-1200

Begonnen von otto3777, 18 September 2016, 17:16:04

Vorheriges Thema - Nächstes Thema

otto3777

Hallo Leute.
Bin vor einigen Tagen auf das Projekt FHEM gestoßen und habe auch schon einiges Probiert und zu Stande gebracht.
Allerdings habe ich jetzt folgende Probleme, wo ich nicht weiter komme:

Kurz zur Installation:
FHEM und Homebridge auf RP1
S7-1200 im Netzwerk
--Kommunikation zwischen allen Funktioniert (Mit einem einfachen Schalter (Bool) getestet)--

Meine Probleme:
Ich möchste eine Dimmer sowie ein Thermostat über Homebridge auf iOS steuer.
Nur leider finde ich da nicht den Richtigen anfang. Dabei ist jetzt der Raum usw erst mal egal, da ich erst mal nur testen will ob und wie alles geht.

Kurz meine Aktuelle fhem.cfg
define Slider S7_AWrite db 33 2 float
attr Slider genericDeviceType light
attr Slider IODev PCS_7
attr Slider homebridgeMapping Brightness=state,part=1
attr Slider room Keller
#attr Slider setList state:slider,0,1,100
attr Slider webCmd state

define Temperaturkorrektur_317 dummy
attr Temperaturkorrektur_317 genericDeviceType thermostat
attr Temperaturkorrektur_317 homebridgeMapping CurrentTemperature=temperature1,minValue=-30
attr Temperaturkorrektur_317 room Keller


Temperaturkorrektur_317 ist derzeit ein dummy, da ich die Verbindung stäter einstellen wollte.


Folgende Errors bekomme ich bei homebridge:

Slider-state value 22 has no part 1
Temperaturkorrektur_317 is NOT a thermostat. set command for target temperature missing


Denke mal ich habe viele Fehler dort gemacht,habe aber keinen richtigen Ansatz. Evtl hat jemand eine Beispiel für mich, da ich leider nichts gefunden habe.

Danke schon mal.

justme1968

die beiden meldungen sagen doch genau was nicht passt:

- bei deinem dimmer brauchst du kein part wenn im reading nur eine zahl steht.

- ein thermostat braucht auch eine TargetTemperature characteristic. wenn es nur die CurrentTemperatur gibt ist es kein thermostat sondern ein thermometer.

gruss
andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

otto3777

Danke für die schnelle Antwort, aber ich komme einfach irgendwie net raus.

Habe jetzt bei Slider homebridge das ",part=1" raus gemacht. Bekomme auch keinen Fehler beim starten vom Homebridge, allerdings sobald ich einen Wert in iOS ändere, folgende Meldung:
Slider-state not a number: undefined

Beim Thermostat habe ich jetzt so geändert:
attr Temperaturkorrektur_317 homebridgeMapping TargetTemperature=state,minValue=18,maxValue=25,minStep=0.5 CurrentTemperature=10

Folgenden Fehler bekomme ich aber immer noch:
Temperaturkorrektur_317 is NOT a thermostat. set command for target temperature missing


Hast du evtl mal ein Tutorial oder kannst mir schnell ein Beispiel schrieben?

justme1968

hat dein Slider ein reading state? die setList und webCmd gehören ziemlich sicher nicht in das S7_AWrite device sondern in den dummy.

kann es sein das du das S7 device und den dummy durcheinander bringst?

CurrentTemperature muss auch auf ein reading zeigen und du brauchst in deinem dummy ein kommando um die solltemperatur auch zu setzen.

etwas so sollte es gehen:attr <thermostat> setList target:slider,18,0.5,25,1
attr <thermostat> readingsList target
attr <thermostat> genericDeviceType thermostat
attr <thermostat> homebridgeMapping TargetTemperature=target::target,minValue=18,maxValue=25,minStep=0.5 CurrentTemperature=temperature
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

otto3777

Also Zwischenstand:
Sieht jetzt folgendermaßen aus:
#Solltemp Keller
define Temperaturkorrektur_315 S7_AWrite db 33 2 float
attr Temperaturkorrektur_315 IODev PCS_7
attr Temperaturkorrektur_315 event-on-change-reading state
attr Temperaturkorrektur_315 genericDeviceType thermostat
attr Temperaturkorrektur_315 group Raumluft
attr Temperaturkorrektur_315 homebridgeMapping TargetTemperature=target::target,minValue=18,maxValue=25,minStep=0.5 CurrentTemperature=Ruecklesen_315:state
attr Temperaturkorrektur_315 room Keller
attr Temperaturkorrektur_315 stateFormat {sprintf("%.1f",ReadingsVal($name,"state",0))." C"}



#Isttemp Keller
define Ruecklesen_315 S7_ARead db 33 6 float
attr Ruecklesen_315 IODev PCS_7
attr Ruecklesen_315 event-on-change-reading state
attr Ruecklesen_315 room Keller
attr Ruecklesen_315 stateFormat {sprintf("%.1f",ReadingsVal($name,"state",0))." C"}


Ich bekomme jetzt auch die Isttemperatur angezeigt.
Allerdings, kann ich das Thermostat nicht einschalten/ausschalten (weiss net ob das überhaupt geht)
Und die Solltemperatur nicht setzen.
Fehlermeldung habe ich noch folgende: "Temperaturkorrektur_315 is NOT a thermostat. set command for target temperature missing"

Wie mache ich den set command?

grüße

justme1968

dein device muss das set kommando haben. laut wiki geht das bei S7_AWrite über einen dummy und ein notfy.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

otto3777

Danke erst noch mal. Habe das ganze jetzt mit einem Dummy gemacht. Sieht so aus:
define t1 dummy
attr t1 genericDeviceType thermostat
attr t1 homebridgeMapping TargetTemperature=target::target,minValue=18,maxValue=25,minStep=0.5 CurrentTemperature=Ruecklesen_315:state
attr t1 readingList target
attr t1 room Keller
attr t1 setList target:slider,18,1,25,1


#Isttemp Keller
define Ruecklesen_315 dummy
attr Ruecklesen_315 setList state


Ist- und Solltemperatur werden korrekt angzeigt.
Nun habe ich noch das Problem, dass ich das Thermostat ja auch an und ausschalten kann, ist im moment immer Aus angezeigt.
Wie kann ich das noch "aktivieren"?

justme1968

dafür kann du TargetHeatingCoolingState mappen. im readme gibt es ein beispiel und im homekit thread auch.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

otto3777

Ok, bin jetzt etwas weiter.

Habe nur das Problem, dass ich den TargetTemperature in den S7 schreiben will, gibts da en einfachen weg?
attr <thermostat> homebridgeMapping TargetTemperature=target::target,minValue=18,maxValue=25,minStep=0.5 CurrentTemperature=temperature

justme1968

das device aus dem das reading kommt und auf das das set kommando abgesetzt wird muss das gleiche sein.

wenn dein thermostat ein dummy ist musst du es per notify auf den s7 weiter leiten.

statt des dummys kannst du dir auch mal readingsProxy anschauen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

otto3777

also mit readingsProxy bekomme ich den Wert ausgelesen, bekomme es aber nicht hin den wert dann zu übergeben.
Mit notify übergibt er mir dann alles, also "targer: 10"  was ich natürlich nicht verarbeiten kann.

Hier mal mein aktueller code:


#Temperatur Keller
define t1 dummy
attr t1 genericDeviceType thermostat
attr t1 homebridgeMapping TargetTemperature=target::target,minValue=18,maxValue=25,minStep=0.5 CurrentTemperature=Ruecklesen_315:state TargetHeatingCoolingState=zustand
attr t1 readingList target zustand
attr t1 room Keller
attr t1 setList target:slider,18,1,25,1 zustand


#Isttemp Keller aus SPS lesen
define Ruecklesen_315 S7_ARead db 33 6 float
attr Ruecklesen_315 IODev PCS_7
attr Ruecklesen_315 event-on-change-reading state

#Solltemperatur Keller in SPS schreiben
define Temperaturkorrektur_315 S7_AWrite db 33 2 float
attr Temperaturkorrektur_315 IODev PCS_7
attr Temperaturkorrektur_315 event-on-change-reading state

define Proxy readingsProxy t1:target

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968