homebridge/homekit

Begonnen von justme1968, 01 Februar 2016, 16:16:37

Vorheriges Thema - Nächstes Thema

budy

#555
Moin Chris,

darüber hatte ich auch schon mal nachgedacht. Allerdings ist doch der Zustand COOL, der ja eine 2 als Value bräuchte, in einem Heizungsthermosten nicht möglich - meine Heizung kühlt halt nicht, sondern sie heizt oder nicht. Ich habe das Mapping um folgendes erweitert:

CurrentHeatingCoolingState=ValvePosition::ValvePosition,values=0:0;/.*/:1

Dadurch wird der Status des Ventils genommen und wenn es zu ist, dann gibts als Ergebnis eine 0 => OFF und ansonsten eine 1 => HEAT.
Das habe ich dann einfach an das Mapping für TargetHeatingCoolingState hinten drangehängt.

Gruß,
Stephan
Debian stretch, FHEM 5.9.
HM-CC-RT-DN, HM-ES-PMSw1-Pl, HM-LC-Dim1TPBU-FM, HMUARTLGW, HMLAN, HM-SEC-KEY, HM-SEC-RHS, HM-SEC-SC-2, HM-SEC-SCo, HM-SEC-SD-2, HM-OU-CFM-TW, div. HUEs, Wifilight, Ring Video Pro

chrisz

Zitat von: budy am 17 April 2016, 10:37:39
Moin Chris,

darüber hatte ich auch schon mal nachgedacht. Allerdings ist doch der Zustand COOL, der ja eine 2 als Value bräuchte, in einem Heizungsthermosten nicht möglich - meine Heizung kühlt halt nicht, sondern sie heizt oder nicht. Ich habe das Mapping um folgendes erweitert:

CurrentHeatingCoolingState=ValvePosition::ValvePosition,values=0:0;/.*/:1

Dadurch wird der Status des Ventils genommen und wenn es zu ist, dann gibts als Ergebnis eine 0 => OFF und ansonsten eine 1 => HEAT.
Das habe ich dann einfach an das Mapping für TargetHeatingCoolingState hinten drangehängt.

Gruß,
Stephan

Hallo Stephan,

Danke, das ist auf jeden Fall meine Backup-Lösung. Ist der Ausdruck zwischen den / / eigentlich eine beliebige RegExp?

Meine Heizkörper haben natürlich auch keine Kühlfunktion, aber ich würde den Begriff COOL gerne dafür verwenden zu erkennen wann ein bestimmter Ventilwert unterschritten wird.

Gruß,

Chris

budy

Moin Chris,

Zitat von: chrisz am 17 April 2016, 13:03:21
Hallo Stephan,

Danke, das ist auf jeden Fall meine Backup-Lösung. Ist der Ausdruck zwischen den / / eigentlich eine beliebige RegExp?

Meine Heizkörper haben natürlich auch keine Kühlfunktion, aber ich würde den Begriff COOL gerne dafür verwenden zu erkennen wann ein bestimmter Ventilwert unterschritten wird.

Nein, zwschen den // kann leider kein richtiger RegExp stehen. Das war mir aber auch schon klar, als ich nochmal Andrès ersten Post in diesem Thread gelesen habe. Schade eigentlich, denn damit könnte man noch einiges anfangen.

André schrieb auch, dass man da ggf. noch eigene js-Funktionen einbauen könnte, aber damit wollte ich jetzt nicht unbedingt anfangen. ;)

Gruß,
Stephan
Debian stretch, FHEM 5.9.
HM-CC-RT-DN, HM-ES-PMSw1-Pl, HM-LC-Dim1TPBU-FM, HMUARTLGW, HMLAN, HM-SEC-KEY, HM-SEC-RHS, HM-SEC-SC-2, HM-SEC-SCo, HM-SEC-SD-2, HM-OU-CFM-TW, div. HUEs, Wifilight, Ring Video Pro

justme1968

@reen: sorry für die späte antwort. das problem das off bei dir auf 1 gemapped wird muss ich erst mal nachstellen. das sollte nicht passieren. ist deine homekit version wirklich aktuell?

@chrisz: das geht in dem du die dir für values ein paar passende regex überlegst.

alternativ kannst du im platform teil von config.json ein "jsFunctions": "myFunctions.js", einfügen, im gleichen verzeichnis in dem das config file liegt ein myFunctions.js file mit folgendem inhalt anlegen:module.exports = {
  reading2homekit: function(mapping, orig) {
var a;
return a.length;
console.log( 'myFunctions: myReading2homekit: mapping:' + mapping + '; orig: ' + orig );
      if( orig == 0 )
        return CurrentHeatingCoolingState.OFF;
      else if( orig < 50 )
        return CurrentHeatingCoolingState.COOL;
      else
        return CurrentHeatingCoolingState.HEAT;
  }
}
und im mapping reading2homekit=myReading2homekit angeben.

@budy: doch. das zwischen den // ist eine richtige regex.


ps: für values: der teil nach dem : kann auch direkt ein bekanntes schlüsselwort der jeweiligen characteristic sein. hier also OFF, COOL oder HEAT. man muss sich nicht die zugehörigen zahlenwerte raus suchen. also so:CurrentHeatingCoolingState=ValvePosition::ValvePosition,values=0:OFF;/^\d$|[1-4]\d/:COOL;/.*/:HEAT

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

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

Heinz1973

Hallo, erst mal besten Dank für das Modul homebridge-fhem, gute Arbeit!

Bisher hat das meiste bei der Anbindung gut funktioniert. Einige Dinge machen mir allerdings Kopfzerbrechen.

z.B.: Switch mit Slider Funktionalität (Stufen 1-8)
Diesen habe ich in FHEM definiert um meine Lüftung zu steuern. Die Stufen 1-8 geben die Lüftergeschwindigkeit vor.
Der switch ist als Dummy deklariert:

define FanSpeed dummy
...
attr FanSpeed setList state:slider,1,1,8

Die Änderungen werden per notify mit dem tatsächlichen Device bzw Reading angebunden.

Ich habe es nur geschafft das Ding als "light" mit "Brightness" anzubinden, so dass ich in Elgato Eve ebenfalls einen Slider sehe und per Sprache steuern kann.

attr FanSpeed genericDeviceType light
attr FanSpeed homebridgeMapping Brightness=state,name=Lüftung,reading=state,minValue=1,maxValue=8,minStep=1,format=UINT8,cmd=,unit=PERCENTAGE


In Eve steht jetzt halt am Slider eine Sonne und zum ändern per Stimme muß ich einen Satz sagen wie "Schalte die Helligkeit der Lüftung auf 7 Prozent!"
Dann kommt zwar das Richtige raus, klingt aber ziemlich dämlich und umständlich!

Am liebsten würde ich sagen "Schalte die Lüftung auf Stufe 7" o.ä.
Ich habe bereits im Source code nach vergleichbaren Dingen wie "Volume" oder "Actuation" geschaut, aber nichts richtiges ans Laufen bekommen.

Gibts eine generische Anbindung für einen Stufenschalter ohne Einheit?
Sorry, falls die Frage schon einmal gestellt wurde, aber ich konnte bisher nichts dazu finden.
Jemand eine Ahnung?

justme1968

homekit erlaubt das steuern von custom characteristiks per siri nicht. d.h. du kannst am wortschatz für die direkte steuerung nichts ändern.

aber schau mal ob du nicht mit siri szenen bessere formulierungen finden kannst. das geht meistens flexibler. du müsstest halt für jede stellung eine eigene szene anlegen.

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

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

Heinz1973

Ja, das mit den Szenen habe ich schon gemacht, das geht, aber der Slider schaut immer noch doof aus.

Gibt es was anderes als die "Helligkeit" auch noch? Wie setzt man die "Lautstärke"? Würde vielleicht besser passen.

budy

Moin André,

Zitat von: justme1968 am 17 April 2016, 16:39:04@budy: doch. das zwischen den // ist eine richtige regex.


ps: für values: der teil nach dem : kann auch direkt ein bekanntes schlüsselwort der jeweiligen characteristic sein. hier also OFF, COOL oder HEAT. man muss sich nicht die zugehörigen zahlenwerte raus suchen. also so:CurrentHeatingCoolingState=ValvePosition::ValvePosition,values=0:OFF;/^\d$|[1-4]\d/:COOL;/.*/:HEAT

...ohh, ich nehme alles zurück und behaupte das Gegenteil. ;)

Gruß,
Stephan
Debian stretch, FHEM 5.9.
HM-CC-RT-DN, HM-ES-PMSw1-Pl, HM-LC-Dim1TPBU-FM, HMUARTLGW, HMLAN, HM-SEC-KEY, HM-SEC-RHS, HM-SEC-SC-2, HM-SEC-SCo, HM-SEC-SD-2, HM-OU-CFM-TW, div. HUEs, Wifilight, Ring Video Pro

chrisz

Zitat von: justme1968 am 17 April 2016, 16:39:04

@chrisz: das geht in dem du die dir für values ein paar passende regex überlegst.

alternativ kannst du im platform teil von config.json ein "jsFunctions": "myFunctions.js", einfügen, im gleichen verzeichnis in dem das config file liegt ein myFunctions.js file mit folgendem inhalt anlegen:module.exports = {
  reading2homekit: function(mapping, orig) {
var a;
return a.length;
console.log( 'myFunctions: myReading2homekit: mapping:' + mapping + '; orig: ' + orig );
      if( orig == 0 )
        return CurrentHeatingCoolingState.OFF;
      else if( orig < 50 )
        return CurrentHeatingCoolingState.COOL;
      else
        return CurrentHeatingCoolingState.HEAT;
  }
}
und im mapping reading2homekit=myReading2homekit angeben.

@budy: doch. das zwischen den // ist eine richtige regex.


ps: für values: der teil nach dem : kann auch direkt ein bekanntes schlüsselwort der jeweiligen characteristic sein. hier also OFF, COOL oder HEAT. man muss sich nicht die zugehörigen zahlenwerte raus suchen. also so:CurrentHeatingCoolingState=ValvePosition::ValvePosition,values=0:OFF;/^\d$|[1-4]\d/:COOL;/.*/:HEAT

gruss
  andre

Super, die regex hat gekplatt!

Grüße,

Chris

Heinz1973

Zitat von: justme1968 am 17 April 2016, 17:13:12
homekit erlaubt das steuern von custom characteristiks per siri nicht. d.h. du kannst am wortschatz für die direkte steuerung nichts ändern.

aber schau mal ob du nicht mit siri szenen bessere formulierungen finden kannst. das geht meistens flexibler. du müsstest halt für jede stellung eine eigene szene anlegen.

gruss
  andre

Ich habe mal bei HAP-NodeJS durchgeschaut und einen "Fan" gefunden. Mit dem hat die Anzeige auch ganz gut geklappt. Hier der Auszug aus der FHEM config:


attr FanSpeed genericDeviceType Fan
attr FanSpeed homebridgeMapping RotationSpeed=state,minValue=1,maxValue=8,minStep=1,unit=,cmd=,


Der Wert wird dann in Elgatho Eve als Drehgeschwindigkeit und einem slider 1-8 angezeigt.

justme1968

stimmt. an den hatte ich nicht mehr gedacht.

hast du auch rausgefunden wie man den per siri steuert ?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

chrisz

Hallo,

ich habe mal generelle Fragen zu den Naming Conventions zu Homebridge/Homekit, was ja auch die Siri Bedienung beeinflusst.

In der Eve App gibt es anscheinend zwei Namen pro Gerät, einen "Siri-Name" und einen "Gerätename" unter "Geräteinformationen". Anscheinend dürfen die beiden Namen nicht gleich sein (verstehe aber nicht warum, ist doch das gleiche Gerät). Bei beiden sind jedoch zumindest in der Eve-App keine Sonderzeichen ("_" oder ".") erlaubt. Zudem müssen anscheinend beide Namen EINDEUTIG innerhalb der gesamten Homebridge Datenbank sein.

Die Funktion des "Siri-Name" ist eigentlich klar, wobei hier wohl der Raum nicht Teil des Namens sein sollte, damit man vernünftige Sätze sprechen kann, was wiederum die Unterscheidungsmöglichkeit für die Eindeutigkeit eingrenzt.

Der "Gerätename" scheint aus FHEM übernommen zu werden, wobei jedoch anscheinend in der Eve App keine Sonderzeichen ("_" oder ".") erlaubt sind - teilweise werden aber wohl Sonderzeichen von FHEM übernommen. Sollte man in FHEM die Geräte ohne Sonderzeichen benennen? Wird das alias attribut irgendwie bei Homebridge berücksichtig?

Für den "Siri-Name" gehen einem recht schnell vernünftige Namen für Geräte aus, insbesondere wenn mann mehrere Etagen/Räume hat.


Irgendwie macht das Ganze keinen Sinn für mich. Verstehe ich etwas falsch oder übersehe ich etwas hier? Hat jemand einen Tipp, wie man den Siri-Namen vernünftig aufbaut, so dass auch meherer geräte gleichen Typs in unterschiedlichen Räumen vernünftig per Siri gesteuert werden können?

Grüße,

Chris

budy

...ich glaube in den USA ist das Verhältnis von Wohnungen zu Häusern anders als bei uns... von daher haben die da das Problem evtl. gar nicht so. Aber es stimmt schon, es ist eine Herausforderung passende Namen zu finden, wenn man in jedem Raum im Haus eine Deckenlampe hat... ;)

Allerdings versteht Siri ja auch Gerätetypen, so dass man ja durchaus sagen "Stelle die Temperatur im Wohnzimmer|Schlafzimmer|Kpche|Flur|... auf 23 Grad". Bei Lampen ist das halt schon problematischer.

Gruß,
Stephan
Debian stretch, FHEM 5.9.
HM-CC-RT-DN, HM-ES-PMSw1-Pl, HM-LC-Dim1TPBU-FM, HMUARTLGW, HMLAN, HM-SEC-KEY, HM-SEC-RHS, HM-SEC-SC-2, HM-SEC-SCo, HM-SEC-SD-2, HM-OU-CFM-TW, div. HUEs, Wifilight, Ring Video Pro

justme1968

jedes gerät das du gezielt ansprechen willst braucht einen haus/wohnungs weit eindeutigen namen. ich denke das ist zur zeit eines der größten prinzipiellen probleme mit homekit. und das ist unabhängig ob haus oder wohnung. auch in einem haus in amerika gibt es mehr als eine deckenlampe.

aber zurück zu den namen: homebridge verwendet zur zeit den device namen als namen und den alias als siri namen. den kannst du dann beliebig überschreiben. das im namen unerlaubte zeichen auftauchen können weiss ich. das war aber bis jetzt noch kein problem du kannst es ja von hand ändern.

statt mit ihrem namen kannst du geräte auch über den raum, die geräte art und die gruppe ansprechen. auch in kombination. das kann man oft sehr flexibel nutzen. wenn das noch nicht reicht helfen oft siri szenen.

ansonsten hoffe ich das es irgendwann mal reicht wenn der name innerhalb eines raumes eindeutig ist.

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

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

Heinz1973

Zitat von: justme1968 am 17 April 2016, 23:43:59
stimmt. an den hatte ich nicht mehr gedacht.

hast du auch rausgefunden wie man den per siri steuert ?

Mit Siri habe ich die Lüftung nicht per Sprache einstellen können. Bei Eve steht an der Oberfläche "Drehgeschwindigkeit": "Stelle die Drehgeschwindigkeit auf Stufe 3" oä hat nicht funktioniert.
Der Slider sieht aber jetzt besser aus: ohne Einheit und mit Lüfterrad. Ansteuerung per Scene klappt auch.