@newBroker
Ja, im Yahka Adapter für HomeKit ein neues Gerät anlegen mit "Lightbulb", dann bei Hue Hacken rein, den Datenpunkt auswählen für RGB HEX des Gerätes. Bei Conversion "Script" auswählen und dann in die beiden Felder "to ioBroker" und "to HomeKit" jeweils das Skript rein. Saturation kannst du weg lassen. Mit der Methode kannst du die Farben einstellen, aber die Intensität nicht.
NEWS
Latest posts made by TM-8
-
RE: Yahka hue color nach hex convertieren
-
RE: Yahka hue color nach hex convertieren
Hallo,
ich stehe vor einem ähnlichen Problem. Ich habe zwar eine Lösung, aber ob die "sauber" ist, kann ich nicht sagen hierfür habe ich zu wenig Kenntnisse in JS.
Problem, ich will die hue Bridge loswerden
Also cc2531 geholt und ZigBee-to-mqtt geflasht. soweit alles gut. Gleich mal den Philips Dimmer Schalter angemeldet. Super, diesen über Node-Red zum öffnen und schließen des WC Fensters und zum Dimmen bzw. ein- ausschalten des Lichte im WC genutzt, wenn es nicht über den Bewegungsmelder laufen soll. Soweit alles gut.
Dann zum testen eine Philips Hue "Iris" angelernt, nun die Ernüchterung, Farbwerte in RGB HEX, kein Wert für Saturation und Hue. Kenne mich zu wenig aus, aber das sollte man doch hinbekommen im ZigBee Adapter.
Warum ist das ein Problem für mich?
Ich benutze zahlreiche Tablets und auch zwei 22,5 Zoll FullHD Touchscreens mit Raspberry Pi4 zur Steuerung im Haus (VIS). Aber ich bin ein Apple Fan-Boy (so habe mich geoutet :-)) und aus diesem Grund muss alles auch über HomeKit (2 iPhones, iPad 2019, iPad Pro, Apple Watch 4 und 5, Apple TV, usw.) steuerbar sein. Find ich persönlich einfach auch gut, wenn ich z.B. im Garten bin beim Grillen und trotzdem die Kontrolle über alles habe.So nun genug, jetzt zu dem was ich umgesetzt habe. (Wo ich aber denke, das ginge bestimmt noch besser.)
Hue: Script to ioBroker: (Saturation und Helligkeit setze ich von Hand hier auf 100%, weil ich nicht weis wie ich die Wert hier aus den anderen Zeilen in der Yahka Geräte Eigenschaften hole soll.)
h = value; s = 100; v = 100; if( h=="" ) h=0; if( s=="" ) s=0; if( v=="" ) v=0; h = parseFloat(h); s = parseFloat(s); v = parseFloat(v); if( h<0 ) h=0; if( s<0 ) s=0; if( v<0 ) v=0; if( h>=360 ) h=359; if( s>100 ) s=100; if( v>100 ) v=100; s/=100.0; v/=100.0; C = v*s; hh = h/60.0; X = C*(1.0-Math.abs((hh%2)-1.0)); r = g = b = 0; if( hh>=0 && hh<1 ) { r = C; g = X; } else if( hh>=1 && hh<2 ) { r = X; g = C; } else if( hh>=2 && hh<3 ) { g = C; b = X; } else if( hh>=3 && hh<4 ) { g = X; b = C; } else if( hh>=4 && hh<5 ) { r = X; b = C; } else { r = C; b = X; } m = v-C; r += m; g += m; b += m; r *= 255.0; g *= 255.0; b *= 255.0; r = Math.round(r); g = Math.round(g); b = Math.round(b); hex = r*65536+g*256+b; hex = hex.toString(16,6); len = hex.length; if( len<6 ) for(i=0; i<6-len; i++) hex = '0'+hex; return "#" + hex; // Hier noch die Raute zum HEX Wert
Hue: Script - to HomeKit: (wenn ich über ein anderes Gerät (nicht Apple) z.B. Touchscreen Raspberry Pi4 die Farbe ändere, damit in HomeKit auch die aktuelle Farbe angezeigt wird, wenn ich dir auf Farbe oder Dimmen gehe)
hex = value; r = hex.substring(1,3); g = hex.substring(3,5); b = hex.substring(5,7); r = parseInt(r, 16); g = parseInt(g, 16); b = parseInt(b, 16); if( r=="" ) r=0; if( g=="" ) g=0; if( b=="" ) b=0; r = parseFloat(r); g = parseFloat(g); b = parseFloat(b); if( r<0 ) r=0; if( g<0 ) g=0; if( b<0 ) b=0; if( r>255 ) r=255; if( g>255 ) g=255; if( b>255 ) b=255; hex = r*65536+g*256+b; hex = hex.toString(16,6); len = hex.length; if( len<6 ) for(i=0; i<6-len; i++) hex = '0'+hex; r/=255; g/=255; b/=255; M = Math.max(r,g,b); m = Math.min(r,g,b); C = M-m; if( C==0 ) h=0; else if( M==r ) h=((g-b)/C)%6; else if( M==g ) h=(b-r)/C+2; else h=(r-g)/C+4; h*=60; if( h<0 ) h+=360; v = M; if( v==0 ) s = 0; else s = C/v; s*=100; v*=100; return h.toFixed(0);
Saturation Script to Homekit:
hex = value; r = hex.substring(1,3); g = hex.substring(3,5); b = hex.substring(5,7); r = parseInt(r, 16); g = parseInt(g, 16); b = parseInt(b, 16); if( r=="" ) r=0; if( g=="" ) g=0; if( b=="" ) b=0; r = parseFloat(r); g = parseFloat(g); b = parseFloat(b); if( r<0 ) r=0; if( g<0 ) g=0; if( b<0 ) b=0; if( r>255 ) r=255; if( g>255 ) g=255; if( b>255 ) b=255; hex = r*65536+g*256+b; hex = hex.toString(16,6); len = hex.length; if( len<6 ) for(i=0; i<6-len; i++) hex = '0'+hex; r/=255; g/=255; b/=255; M = Math.max(r,g,b); m = Math.min(r,g,b); C = M-m; if( C==0 ) h=0; else if( M==r ) h=((g-b)/C)%6; else if( M==g ) h=(b-r)/C+2; else h=(r-g)/C+4; h*=60; if( h<0 ) h+=360; v = M; if( v==0 ) s = 0; else s = C/v; s*=100; v*=100; return s.toFixed(1);
Ich möchte das nicht über den Javascript Adapter machen, und oder extra Datenpunkte von Hand anlegen für jede Lampe. Eine andere Lösung wäre evtl. Node Red. Ich habe noch nicht getestet, welche "Pfade und Datenpunkte" angelegt werden in Matt wenn man den Zigbee Stick damit verbindet. Ich möchte eigentlich direkt den Zigbee Adapter von ioBroker verwenden, den finde ich bis auf das Problem super.
Fazit, ich kann nicht verstehen warum zum einen im ZigBee Adapter nicht die Hue - und Sat Datenpunkte angelegt werden, dann wäre das Problem gelöst. Zum anderen wäre es bestimmt auch machbar im Yahka Adapter die Felder für HEX und drei Felder für RGB anzulegen. Dann wären wir alle hier super Flexibel. Oder verstehe ich das Falsch und sowas ist nicht machbar.
Wie kann man die Entwickler auf diese Problematik aufmerksam machen?
Hier noch ein Screenshot von den Datenpunkten die vom ZigBee Adapter für die Philips Hue Lampe "Iris" angelegt werden:
Hier noch ein Screenshot, welche Datenpunkte die Philips Hue Adapter in Verbindung mit der Hue Bridge erzeugt für die gleiche Lampe:
Noch was zum Schluss:
Ähnlich ist es beim Shelly ioBroker Adapter, hier ein Screenshot von den Datenpunkten die dieser zu einem Shelly RGBW2 anlegt, Verwendung mit einen RGBW Strip (auch kein Hue Wert hier wird RGBW als HEX angelegt und damit schlecht in Verbindung mit Yahka Adapter für HomeKit):
gelöst habe ich das dadurch, das ich den Homebridge Adapter für ioBroker installiert habe und dort das npm-Modul "homebridge-shelly" hinzugefügt habe. Dadurch legt mir der Adapter dann für den gleichen Shelly RGBW2 folgende Datenpunkte an, mit HUE uns SAT:
Dadurch kann ich die Shelly mit jedem Farbwert ansprechen. Egal was mir vorliegt. Hier noch ein Screenshot der Einstellungen des Homebridge Adapters:
Ich hoffe mal, ich sehe den Wald vor lauter Bäumen nicht und es gibt für das oben beschriebene Problem doch eine Lösung, bzw. die Entwickler habe diese schon implementiert und ich verstehe nur nicht den Yahka Adapter und den ZigBee Adapter richtig anzuwenden.
Ich bin für jeden Tipp dankbar.
-
RE: Mehrere Aktoren abfragen
Hallo, danke für deine schnelle Antwort.
Ich habe es hinbekommen.
Habe diesen Teil hier:
` > // Init statesvar myStates = $('hm-rpc.1.MEQ0064913.*.STATE');
myStates.each(function(id) {
var pos = myIndexes.indexOf(obj.id);
log('Found ' + id + ' position ' + pos);
if (pos != -1) {
var val = getState(id).val;
values[pos] = (val === true || val === 'true') ? 1 : 0;
}
});
myStates.on(function(obj) {
var pos = myIndexes.indexOf(obj.id);
if (pos != -1) {
var val = getState(id).val;
values[pos] = (val === true || val === 'true') ? 1 : 0;
}
createPictureName();
}); `
so geändert bei obj und id die in Klammern stehen:
// Init states var myStates = $('hm-rpc.1.MEQ0064913.*.STATE'); myStates.each(function(id) { var pos = myIndexes.indexOf(id); if (pos != -1) { var val = getState(id).val; values[pos] = (val === true || val === 'true') ? 1 : 0; } }).on(function(obj) { var pos = myIndexes.indexOf(obj.id); if (pos != -1) { var val = getState(obj.id).val; values[pos] = (val === true || val === 'true') ? 1 : 0; } createPictureName(); });
Jetzt schreibt er die Werte in den Dateinamen.
Vielen Dank nochmal für deine Hilfe.
-
RE: Mehrere Aktoren abfragen
Hallo Bluefox,
vielen Dank für deine schnelle Hilfe.
Ich habe es wie folgt abgeändert:
`var pattern = "/vis.0/1280x800/img/plan/haus-nacht_st-%s_ur-%s_ef-%s_fr-%s_ei-0.png"; var values = []; var myIndexes = [ "hm-rpc.1.MEQ0064913.13.STATE", "hm-rpc.1.MEQ0064913.14.STATE", "hm-rpc.1.MEQ0064913.16.STATE", "hm-rpc.1.MEQ0064913.17.STATE" ]; function createPictureName(doNotWrite) { var result = pattern; for (var i = 0; i < myIndexes.length; i++) { result = result.replace('%s', values[i]); log(result); } if (!doNotWrite) setState('pictureName', result, true); return result; } // Init states var myStates = $('hm-rpc.1.MEQ0064913.*.STATE'); myStates.each(function(id) { var pos = myIndexes.indexOf(obj.id); if (id != -1) { var val = getState(id).val; values[pos] = (val === true || val === 'true') ? 1 : 0; } }).on(function(obj) { var pos = myIndexes.indexOf(obj.id); if (id != -1) { var val = getState(id).val; values[pos] = (val === true || val === 'true') ? 1 : 0; } createPictureName(); }); createState('pictureName', createPictureName(true));` Weil es den letzten Platzhalter im Bildnamen noch nicht gibt. Dann habe ich als Pfad zum Bild das hier eingetragen: `~~[code]~~{javascript.0.pictureName}[/code]` Es wird aber kein Bild angegeben, weil "%s" als undefined im Bildnamen wiedergegeben wird. Im Quelltext steht folgender Bildname mit Pfad: `~~[code]~~... src="/vis.0/1280x800/img/plan/haus-nacht_st-undefined_ur-undefined_ef-undefined_fr-undefined_ei-0.png" ...[/code]` Was habe ich falsch gemacht?[/i]
-
Mehrere Aktoren abfragen
Hallo, ich bin am Anfang mit der Script Welt und ioBroker. Ich habe mir da ein Script geschrieben, wofür es mit Sicherheit eine bessere Möglichkeit zur Programmierung gibt.
Das Script soll folgendes erledigen:
1. Überwachen ob an einem der Schaltausgänge des Wired Aktors HMW-IO-12-Sw7-DR MEQXXXXXXX eingeschaltet oder ausgeschaltet wird.
2. Je nach Status eines Ausgangs soll 0 oder 1 geschrieben werden.
3. Aus den Schaltzuständen soll der Name einer Grafikdatei zusammengesetzt werden, zur Zeit wird die Grafik über das Widget "static image" angezeigt. Den Dateinamen setze ich dab erst im Widget zusammen und zwar so:
/vis.0/1280x800/img/plan/haus-nacht_st-{javascript.0.HausUntenStrahlerEinfahrt}_ur-{javascript.0.HausUntenWandleuchteEinfahrt}_ef-{javascript.0.HausUntenEinfahrt}_fr-{javascript.0.HausUntenFreisitz}_ei-{javascript.0.HausUntenEingang}.png
Es funktioniert, aber ich bin mir sicher es geht eleganter und besser, evtl. über ein array oder so. Leider habe ich es nur so hinbekommen. Noch besser wäre es wenn man nur einen createState bräuchte und der Dateinamen im Script zusammengesetzt wird.
Folgendes sollte noch möglich sein. Das Script soll nur nach Sonnenuntergang ausgeführt werden.
createState('HausUntenStrahlerEinfahrt', '0'); createState('HausUntenWandleuchteEinfahrt', '0'); createState('HausUntenEinfahrt', '0'); createState('HausUntenFreisitz', '0'); createState('HausUntenEingang', '0'); on("hm-rpc.1.MEQXXXXXXX.13.STATE", function(obj) { /*HausUntenStrahlerEinfahrt*/ if (obj.newState.val === true){ setState('HausUntenStrahlerEinfahrt', '1'); } else { setState('HausUntenStrahlerEinfahrt', '0'); } }); on("hm-rpc.1.MEQXXXXXXX.14.STATE", function(obj) { /*HausUntenWandleuchteEinfahrt*/ if (obj.newState.val === true){ setState('HausUntenWandleuchteEinfahrt', '1'); } else { setState('HausUntenWandleuchteEinfahrt', '0'); } }); on("hm-rpc.1.MEQXXXXXXX.16.STATE", function(obj) { /*HausUntenEinfahrt*/ if (obj.newState.val === true){ setState('HausUntenEinfahrt', '1'); } else { setState('HausUntenEinfahrt', '0'); } }); on("hm-rpc.1.MEQXXXXXXX.17.STATE", function(obj) { /*HausUntenFreisitz*/ if (obj.newState.val === true){ setState('HausUntenFreisitz', '1'); } else { setState('HausUntenFreisitz', '0'); } });
Anzeigen tut das Script dann eine 3D Ansicht vom Haus (verkleinerte Bilder hänge ich in den Anhang, zur besseren Vorstellung, natürlich sind es noch mehr Grafiken), in der die jeweils eingeschalteten Strahler, Laternen, Wandleuchten am Haus und Grundstück dann leuchten wenn diese eingeschaltet sind. Das funktioniert auch schon wunderbar.
Vielleicht kann mir jemand dabei helfen das Ganze besser zum machen.
Alles aus bei Nacht:
Wandleuchte im Freisitz leuchtet bei Nacht:
Alle ein bei Nacht
Vielen Dank schonmal.
-
RE: Fehlende Bilder (Icons) in der Widget Liste im VIS Editor
Hallo weitere Code Fehler:
HQWidgets CircleKnob () falscher Bildname in der Pfadangabe (großes "W" statt kleinem "w" im Bildnamen)
![](widgets/hqwidgets/img/prev/Prev_hqWidgetsCircleKnob.png)
ändern in
![](widgets/hqwidgets/img/prev/Prev_hqwidgetsCircleKnob.png)
und es wird angezeigt.
613_hqwidget-circleknob.jpg -
RE: Fehlende Bilder (Icons) in der Widget Liste im VIS Editor
Hallo weitere Code Fehler:
HQWidgets Dimmer () falscher Bildname in der Pfadangabe (großes "W" statt kleinem "w" im Bildnamen)
![](widgets/hqwidgets/img/prev/Prev_hqWidgetsDimmer.png)
ändern in
![](widgets/hqwidgets/img/prev/Prev_hqwidgetsDimmer.png)
und es wird angezeigt.
613_hqwidget-dimmer.jpg -
Fehlende Bilder (Icons) in der Widget Liste im VIS Editor
Hallo,
wahrscheinlich ist es ja schon längst bekannt, aber ich möchte es trotzdem nochmal Posten.
Bei den Pfadangaben für die Grafiken in der Widget Liste auf der linken Seite im Vis Editor sind statt "/" Slash's in der Pfadangabe der Grafiken "" Backslash's drin.
![](widgets\plumb\img\prev_c_valve_v.png)
ändere ich das wie folgt
![](widgets/plumb/img/prev_c_valve_v.png)
dann werden die Grafiken angezeigt.
Aber wie gesagt, das ist bestimmt schon bekann. Einfach löschen diesen Post.
Gruß Thomas
613_fehler.jpg -
RE: Übertragen von ioBroker Windows auf ioBroker Raspberry pi 2
Muss ich noch was beachten, werde mich morgen dann mal dran machen.
Danke
-
Übertragen von ioBroker Windows auf ioBroker Raspberry pi 2
Hallo,
ich test jetzt schon erfolgreich ioBroker auf Windows7 Laptop, danke erstmal für die tolle Software.
Da ich mich jetzt entschlossen habe ioBroker für meine Hausautomation mit Homematic CCU2 zu verwenden, habe ich vorher noch fragen:
1. Ist es möglich die kompletten Einstellungen (Views, Scripte usw.) von Windows auf Raspberry zu übertragen, wenn ja evtl. wie?
2. Da ich mir erst einen neuen ARM Computer anschaffe wollte ich fragen welchen ich nehmen soll, Raspberry PI 2 oder Banana PI?
Danke schonmal für eure Antworten.