Guten Morgen,
ich habe bei mir im fhem nun auch homebridge-fhem installiert, welches meine Tasmota Steckdosen auch ohne weiteres einwandfrei erkannt hat und sauber funktioniert - soweit so schön. Nun habe ich hier aber noch Elero Jalousien (über einen Elero Stick eingebunden), welche bei mir folgendermassen konfiguriert sind:
define Jalousie_Buero_Fenster EleroDrive 2
setuuid Jalousie_Buero_Fenster 5eb55e59-f33f-bd54-8ad4-47dc22390c8deb4f
attr Jalousie_Buero_Fenster userattr buerojalousien buerojalousien_map jalousien jalousien_map structexclude
attr Jalousie_Buero_Fenster IODev EleroStick_0
attr Jalousie_Buero_Fenster IntermediatePercent 60
attr Jalousie_Buero_Fenster TopToBottomTime 60
attr Jalousie_Buero_Fenster devStateIcon 1.bottom_position:fts_shutter_100 1.top_position:fts_shutter_10 1.tilt_position:vent_ventilation_level_0 1.intermediate_position:fts_shutter_60 1.stopped_in_undefined_position:fts_shutter_manual 1.moving_down:fts_shutter_down 1.moving_up:fts_shutter_up\
2.0:fts_shutter_10 2.50:fts_shutter_60 2.100:fts_shutter_100
attr Jalousie_Buero_Fenster icon fts_shutter
attr Jalousie_Buero_Fenster room Buero,Jalousien
attr Jalousie_Buero_Fenster stateFormat 1:state\
2:percentClosed
Zusätzlich habe ich mir in FHEM/99_myUtils.pm seinerzeit noch sowas reingebastelt:
######################## Elero ##################################
# Elero move Down and Tilt afterwards
sub moveEleroDownTilt($) {
my ($obj) = @_;
fhem ( "set $obj moveDown ;\
sleep 70 ; set $obj moveTilt" );
}
# Elero only Up when not stopped_in_undefined_position
sub moveEleroSaveUp($) {
my ($obj) = @_;
if ( Value($obj) !~ m/"stopped_in_undefined_position"/ ){
fhem ( "set $obj moveUp" );
}
}
# Elero only Down when not stopped_in_undefined_position
sub moveEleroSaveDown($) {
my ($obj) = @_;
if ( Value($obj) !~ m/"stopped_in_undefined_position"/ ){
fhem ( "set $obj moveDown" );
}
}
# Elero only Intermediate when in top_position
sub moveEleroSaveIntermediate($) {
my ($obj) = @_;
if ( Value($obj) =~ m/"top_position"/ ){
fhem ( "set $obj moveIntermediate" );
}
}
# Elero only Tilt when in bottom_position
sub moveEleroSaveTilt($) {
my ($obj) = @_;
if ( Value($obj) =~ m/"bottom_position"/ ){
fhem ( "set $obj moveTilt" );
}
}
######################## Elero ##################################
Damit kann ich die Jalousien mit den entsprechenden move Kommandos aus dem Elero Modul und meinen selbsgestrickten Dingern über FHEM steuern. Das kann man bestimmt alles optimaler gestalten, aber für mich reichts. Nun möchte ich das ganze aber auch in Homebridge einbinden und vom iPhone aus steuern - ich scheitere aber bereits an der Dokumentation dazu - soll heissen, dass ich nichts von dem verstehe was in der Dokumentation dazu geschrieben steht :( Mir fehlt leider das Grundverständis davon wovon da die Rede ist und ich weiss nicht mal wie ich wo anfangen soll und ob das überhaupt funktioniert, dass ich meine Befehle in Homebridge auf dem iPhone (Siri benutze ich nicht) abgebildet bekomme.
Kann mir da jemand eine Anfängertaugliche einfach Erklärung mit einem Beispiel basierend auf obigem geben? Ich bin da aktuell vollkommen blank.
Besten Dank!
Ich habe "nur" Rollläden" und keine Jalousien. Also kann ich dir nicht genau deine Lösung anbieten.
Aber ich kann versuchen, dir meinen Aufbau zu erläutern.
Bei room musst du natürlich noch deinen Homebridge Room hinzufügen.
Mein Rolladen hat ein Reading namens "position". Dieser zeigt die aktuelle Position, z.B. 0 für "ganz auf" und 100 für "ganz zu" an.
Und es gibt dann das gleichnamige Kommando "position" für eine genaue Positionsansteuerung, z.B. "set EsszimmerRolladen position 50". Die sonstigen Kommandos wie open oder close werden im Mapping gar nicht genutzt, sollten also hier keine Rolle spielen.
Für Homebridge habe ich folgendes Attribut definiert:
attr EsszimmerRolladen homebridgeMapping clear\
CurrentPosition=position,minValue=0,maxValue=100,minStep=1,invert=1 \
TargetPosition=position,minValue=0,maxValue=100,minStep=1,invert=1,cmd=position
Das "invert=1" brauche ich, damit mir die Home App auf dem Handy die Richtung korrekt anzeigt.
"minValue=0,maxValue=100" sollten selbsterklärend sein, mit "minStep=XX" kannst du auch eine grobere Angabe festlegen, wenn das für dich sinnvoll sein sollte.
Mit Siri arbeite ich nicht, mir reicht die App für die Darstellung und auch für direkte Kommandos.
Hoffentlich hilft das Beispiel.
vielen Dank,
das Elero Drive hat allerdings nur:
moveDown
moveUp
stop
moveIntermediate
moveTilt
refresh
als commands und:
position
Current position of the drive (top_position, bottom_position, ...)
percentClosed
0 ... 100
100 is completely closed, 0 is completely open
als Readings. Wenn ich den Part:
Zitat von: jhohmann am 10 Mai 2022, 18:31:10
Für Homebridge habe ich folgendes Attribut definiert:
attr EsszimmerRolladen homebridgeMapping clear\
CurrentPosition=position,minValue=0,maxValue=100,minStep=1,invert=1 \
TargetPosition=position,minValue=0,maxValue=100,minStep=1,invert=1,cmd=position
Das "invert=1" brauche ich, damit mir die Home App auf dem Handy die Richtung korrekt anzeigt.
"minValue=0,maxValue=100" sollten selbsterklärend sein, mit "minStep=XX" kannst du auch eine grobere Angabe festlegen, wenn das für dich sinnvoll sein sollte.
bei mir hinzufüge hätte ich erwartet, dass ich wenigstens
irgendwas im Homebridge sehe - auch wenn es mit meinen Readings oder Kommandos nicht passt - aber das kommt irgendwie gar nichts...
[Edit]:
Hinzu kommt, dass ich ja mti den Elero-Dingern nur absolute Positionen mit jeweils dafür vorgesehenen Kommandos anfahren kann. Geht das denn überhaupt irgendwie mit Homebridge? Das ist mir alles nicht wirklich klar :(
Wenn du "set <device> position 30" was bewegen kannst, hätte ich gesagt, dass es so gehen müsste.
Hast du nach dem Speichern der FHEM Änderung den Homebridge Dienst neu gestartet? Ansonsten kennt dieser Dienst deine Änderungen nicht.
Zitat von: jhohmann am 12 Mai 2022, 11:12:45
Wenn du "set <device> position 30" was bewegen kannst, hätte ich gesagt, dass es so gehen müsste.
Kann er nicht, es gibt das Kommando ja nicht...
Vielleicht ist es ausreichend, wenn du per eventMap "Pseudo-numerische" Kommandos generierst, etwa in der Art:
defmod jal_test dummy
attr jal_test eventMap /moveDown:position 0/moveUp:position 100/moveIntermediate:position 50/
attr jal_test setList moveDown moveUp stop moveIntermediate moveTilt refresh position
attr jal_test webCmd :
(Bitte nicht den dummy übernehmen, der war nur für's Anschauen gedacht!)
Ansonsten könnte cmdalias notfalls etwas tiefer eingreifen...
vielen Dank, aber auch damit zeigt mir Homebridge das Gerät nicht an. Sämtliche Dienste sind nach den Änderungen neugestartet...
Hmm, schade.
Leider weiß ich nicht, wo auf dem Weg FHEM->Homebridge welche Info eingesammelt wird, aus anderen Zusammenhängen scheint es mir so zu sein, dass bestimmte Setter da sein müssen, damit das korrekt übertragen wird. Was zeigt denn (nach Ergänzung der eventMap):
{getAllSets("Jalousie_Buero_Fenster")}
Wenn dein Device nicht wirklich von Homebridge unterstützt wird, reicht es nicht, das Ding in den Raum für Homebridge und das homebridgeMapping zu definieren.
Hier muss man dann noch manuell den korrekten Typen setzen.
attr EsszimmerRolladen genericDeviceType blind
Das geht auch manuell in der Kommandozeile, falls dir das am Gerät selbst so nicht abgeboten wird.
Probiere das mal aus (auch wieder speichern und Neustart des Homebridge Diensts).
Und wenn es auch nicht geht, zeige doch mal ein vollständiges 'list' von deinem Elero Drive.
Versuch mal :
attr Jalousie_Buero_Fenster room Buero,Jalousien,Homekit
Hallo,
erstmal besten Dank an alle die mich hier unterstützen, attr Jalousie_Buero_Tuer genericDeviceType blind
war der entscheidende Hinweis!
Die Jalousie erscheint jetzt auf dem iOS Device und ich kann sie mit den Settings von @jhohmann auch erstmal (ganz) hoch und (ganz) runterfahren, Hurra! Die Anzeige stimmt aktuell noch nicht - Homebridge sagt, dass sie immer am schliessen wäre und das Homebridge Log schmeisst:
This plugin generated a warning from the characteristic 'Current Position': characteristic value expected valid finite number and received "undefined" (undefined). See https://homebridge.io/w/JtMGR for more info.
Grundsätzlich bin ich aktuell aber erstmal froh, dass es überhaupt irgendwie tut :) Ich habe am Wochenende aber leider keine Zeit mich weiter drum zu kümmern. Ab Montag werde ich weitermachen und dann auch weiter Infos liefern - bis dahin wünsche ich allen ein schönes sonniges Wochenende!
Hi,
ich komme leider immer noch nicht weiter. Mittlerweile bin ich soweit, dass es mir reichen würde einfach nur zwei Kommandos via Homebridge an die Jalousie schicken zu wollen:
moveIntermediate
moveUp
Mein Gedanke ist nun, dass über den genericDeviceType switch machen zu wollen, weil ich mir einbilde, dass es hier zwei Kommandos gibt (On und Off) die ich dann auf moveIntermediate und moveUp mappen kann. Nur - wie?
Ich habe jetzt folgendes porbiert:
attr Jalousie_Buero_Tuer homebridgeMapping clear cmdOn:moveIntermediate cmdOff=moveUp
attr Jalousie_Buero_Tuer genericDeviceType switch
oder auch:
attr Jalousie_Buero_Tuer homebridgeMapping clear cmds=On:moveIntermediate;Off:moveUp
attr Jalousie_Buero_Tuer genericDeviceType switch
oder sowas:
attr Jalousie_Buero_Tuer genericDeviceType switch
attr Jalousie_Buero_Tuer eventMap /moveUp:Off/moveIntermediate:On/
attr Jalousie_Buero_Tuer setList moveUp moveIntermediate
attr Jalousie_Buero_Tuer webCmd :
attr Jalousie_Buero_Tuer homebridgeMapping clear cmds=On:moveIntermediate;Off:moveUp
... funktioniert aber alles nicht. ich sehe nichts in den Logs, beim drücken auf On/Off passiert nichts. Ich bin sicher, dass ich da fundamental etwas falsch mache und nicht verstehe, wie schon erwähnt scheitere ich aber vollständig an der Dokumentation dazu. :(
Ich habe mir was gebaut, damit mein Handy "selbst" einen Schalter klicken kann, wenn ich das Haus verlasse. Dazu habe ich mir einen Dummy definiert, der dafür geschaltet werden kann.
defmod juergenAtHome dummy
attr juergenAtHome cmdIcon da:user_available weg:user_away
attr juergenAtHome genericDeviceType switch
attr juergenAtHome homebridgeMapping On:valueOn=da,cmdOn=da,cmdOff=weg
attr juergenAtHome room Homekit,System
attr juergenAtHome setList state:da,weg
attr juergenAtHome webCmd da:weg
Eventuell hilft das Beispiel bei deiner Definition des homebridgeMapping.
Danke, aber mein Problem ist halt dass ich nicht verstehe wie ich das bei mir umbauen muss, weil ich noch nicht mal die Syntax von homebridgeMapping begreife. Ich werde das Thema jetzt einfach begraben.
Zitat von: fhemthom am 14 Mai 2022, 08:07:04
attr Jalousie_Buero_Tuer genericDeviceType blind
war der entscheidende Hinweis!
Warum bist du nicht erst mal dabei geblieben?!?
Was das homebridgeMapping angeht, solltest du m.E. erst mal auf "clear" verzichten (das löscht einfach nur die Standards), und erst mal nur die aktuelle Position (etwas anders) einlesen lassen:
CurrentPosition=percentClosed,minValue=0,maxValue=100,minStep=1
(ggf. noch mit "invert=1").
Damit sollte der Fehler mit der "Dauerbewegung" erst mal weg sein, du müßtest weiter hoch/runter anfahren können, und mit etwas Glück funktioniert auch "stop".
Danach wäre es gut, wenn du mal wieder ein komplettes list zeigst, an dem man auch die Readings (v.a. bei Halts auf halber Strecke) zu sehen sind. Dann kann man ggf. weitersehen...
Danke, aber das gibt keine Besserung. Nichts für ungut, aber ich habe da jetzt aufgegeben und mag da nicht noch mehr Zeit investieren. Trotzdem besten Dank nochmal an alle die versucht haben mir da weiterzuhelfen!