Steuerung Philips Hue

Das wär Subba!
Freue mich jetzt schon drauf. Da könnte man ja die Couchlampe im Wohnzimmer bei Mikro an auf Rot schalten :slight_smile:

Danke Dir ich warte

Schritte um Zigbee/Hue Leuchten mit Mairlist zu steuern:

Es wird benötigt:

  • Philips HUE Bridge mit Netzwerkzugang

  • Eine oder mehere ZigBee oder HUE Leuchten

  • Mairlist 6.3.10 (Build 4428) oder neuer

  • Einen Steuerbefehl oder Event (in meinem Fall eine Logik vom DHD)

  • 1 KG Haribo

Schritte:

  1. IP Adresse der Bridge herausfinden. Dies geht am einfachsten über folgeden Link:
    https://discovery.meethue.com/ alternativ über die HUE App (Einstellungen–>Hue Bridges–>“i”–> Ip-Adresse

  2. Folgende Adresse aufrufen: https://<bridge ip address>/debug/clip.html

  1. Seite ausfüllen:
URL /api
Body {“devicetype”:“Studio#PC1”}
Method POST

  1. HUE Taste auf Bridge kurz drücken um einen Key zu generieren.

  1. Key (im Beispiel “1028d66426293e821ecfd9ef1a0731df”) wegspeichern.

  2. Anzusprechende Leuchte heraussuchen

URL /api/1028d66426293e821ecfd9ef1a0731df/lights
Method GET

Jetzt werden unten im Text alle Leuchten aufgelistet, jetzt muss nur noch die passende ID herausgesucht werden, in meinem Fall die 24

  1. Mairlist Script anlegen
  • Eine neue Datei im Explorer anlegen (Textdokument) und diese dann umbenennen z.B. HUE.mls (wichtig ist das vorher die Dateinamenerweiterungen angeschaltet sind, nicht das die datei dann HUE.mls.txt heißt :smiley: )

  • Diese öffnen und Script erstellen. In meinem einfachen Fall lautet dieser:

    procedure OnExecuteCommand(Command: string);
    begin
    if Command = 'Tisch_ON' then begin 
    HTTPPutRaw('https://192.168.3.147/api/iC79TpwujMQZO0Os3WVexlRuC6HcWDa4Yrxxf- 
    Ar/lights/24/state', 'application/json', '{"on":true}', nil);
    end;
    
    if Command = 'Tisch_OFF' then begin 
    HTTPPutRaw('https://192.168.3.147/api/iC79TpwujMQZO0Os3WVexlRuC6HcWDa4Yrxxf- 
    Ar/lights/24/state', 'application/json', '{"on":false}', nil);
    end;
    end;
    begin
    end.
    

Dieser Befehl schaltet die Lampe ein (true) bzw. aus (false) - um weitere Parameter zu änder kann man statt {“on”:true} auch {“on”:true, “sat”:254, “bri”:254,“hue”:10000} verwenden.

  1. Script in Mairlist laden → Konfiguration → Hintergrund-Scripts → Hinzufügen → Datei auswählen

Der HUE Teil wird hier ganz schön beschrieben: Get Started - Philips Hue Developer Program

Ich hoffe ihr kommt damit klar, falls nicht gerne melden :slight_smile:

3 Likes

DU bist der Admin und hast sicher die Möglichkeit, hier eigene Grafiken hinzuzufügen (u.a. auch das mAirList-Logo :wink:).
Ich kenne das von einer anderen Discourse-Plattform. hüstel

1 Like

Ist in dem Skript nicht ein

end;

zuviel?

Das dachte ich beim erstellen eigentlich auch, aber egal welches ich raus lösche, danach geht der Script nimmer.

Ich lag natürlich falsch. Das zweite end; ist das von der Prozedur selber.

Du kannst Dir (und anderen!) übrigens das Lesen von Code vereinfachen, indem Du ihn durch Einrückungen mittels jeweils zweier Leerzeichen gliederst. Ich hatte dazu mal eine kleine Hilfestellung verfaßt.

Solcherart gegliedert wäre mir (kein Vorwurf!) der „Fehler“ gar nicht aufgefallen.

Super, Danke Dir für Deine mühe. Bin gespannt ob ich hinbekomme.
Da geb ich Dir a mal a Moaß :beer: aus. :yum: :+1: :+1:

Das freut mich übrigens sehr zu hören, habe ich das Thema doch vor ein paar Jahren hier schonmal vorgeschlagen. Die Idee wurde damals aber eher ins Lächerliche gezogen.

Der kleine Unterschied ist, daß Du derlei Steuerung als native mAirList-Eigenschaft impliziert sehen wolltest. Darauf, daß es durchaus Wege gibt, sie mit mAirList-Bordmitteln zu verwirklichen, habe ich seinerzeit schon hingewiesen. Das wolttest Du aber nicht.

Konnte man MQTT nicht auch einfach per http get ansprechen bzw. Über ein Command-line Tool?

Die andere Flussrichtung, fände ich da tatsächlich schon spannender… :wink: Dafür würde ich meiner Home-Studio sogar ein Upgrade spendieren, denke ich, Advanced oder Advanced-plus… :thinking:

1 Like

Ja, kann man. mosquitto_pub und mosquitto_sub sind Kommandozeilen Clients die auch unter Windows gehen müssten (zumindest hab ich auf die Schnelle schon die Downloads gefunden).

Habe es mit ON AIR und OFF AIR probiert. Die einzigen Befehle bei dem Mairlist reagiert.
Hier kommt folgendes
Fehler Runtime error “Access violation at address 00BAA740 in module ‘mAirList.exe’. Read of address 00000000” in background script C:\ProgramData\mAirList\6.3\config\HUE.mls, handling message: EXECUTE 331E187E3C2BB478 OFF AIR
Eventuell muss im Script den Fehler suchen oder habe ich einen Denkfehler?
Meins schaut so aus:
begin
if Command = ‘ON AIR’ then begin
HTTPPutRaw(‘https://192.168.178.65/api/YFX86CrQISptZ7ePraBUgzm49RqBXYQdDChmGV4C/lights/19/state’, ‘application/json’, ‘{“on”:true}’, nil);
end;

if Command = ‘OFF AIR’ then begin
HTTPPutRaw(‘https://192.168.178.65/api/YFX86CrQISptZ7ePraBUgzm49RqBXYQdDChmGV4C/lights/19/state’, ‘application/json’, ‘{“on”:false}’, nil);
end;
end;
begin
end.

Keine Idee ?

Danke

Schade das es nicht funktioniert. Meistens ist es leider so. Erst heiß machen dann kommt nix mehr. :wink:
Ein Hinweis was man falsch macht wäre schön gewesen.
Allen schönes schaffen noch

Bumpen ist erlaubt, aber bitte freundlich bleiben! :slight_smile:

Kannst du bitte noch einmal das komplette Script posten, und zwar in einem Code-Block:

Bildschirmfoto von Google Chrome (18-05-21, 18-56-15)

Da scheint auch oben was zu fehlen…

1 Like

Sorry war nicht meine Absicht unfreundlich rüber zu kommen.

procedure OnExecuteCommand(Command: string);
begin
if Command = 'ON AIR' then begin 
HTTPPutRaw('https://192.168.178.65/api/YFX86CrQISptZ7ePraBUgzm49RqBXYQdDChmGV4C/lights/19/state', 'application/json', '{"on":true}', nil);
end;
if Command = 'OFF AIR' then begin 
HTTPPutRaw('https://192.168.178.65/api/YFX86CrQISptZ7ePraBUgzm49RqBXYQdDChmGV4C/lights/19/state', 'application/json', '{"on":false}', nil);
end;
end;
begin
end.

Wie gibst Du denn die Befehle ON AIR und OFF AIR? (Bitte den Code durch Einrücken strukturieren, siehe oben.)

Sorry ich hab leider keine Ahnung was mit Einrücken gemeint ist und ich habe den gleichen Code wie niconline oben gepostet hat genommen. Nur mit dem Befehl ON AIR und OFF AIR.
Mit was anderen konnte ich es für mich nicht in Verbindung setzen.

Danke für Eure Hilfe

Das ist gemeint:


Also:

procedure OnExecuteCommand(Command: string);
begin
  if Command = 'ON AIR' then
  begin 
    HTTPPutRaw('https://192.168.178.65/api/YFX86CrQISptZ7ePraBUgzm49RqBXYQdDChmGV4C/lights/19/state', 'application/json', '{"on":true}', nil);
  end;
  if Command = 'OFF AIR' then
  begin 
    HTTPPutRaw('https://192.168.178.65/api/YFX86CrQISptZ7ePraBUgzm49RqBXYQdDChmGV4C/lights/19/state', 'application/json', '{"on":false}', nil);
  end;
end;

begin
end.


Und woher kommen die Befehle ON AIR und OFF AIR? Die muß das System ja irgendwie erhalten.

1 Like

Dankeschön. :+1:

ON AIR und OFF AIR Habe ich auch für das USB Gamepad auf einen anderen Rechner verwendet. Kommt von Mairlist. Daher dachte ich es passt

Probiere mal folgendes:

procedure OnOnAir;
begin
  HTTPPutRaw('https://192.168.178.65/api/YFX86CrQISptZ7ePraBUgzm49RqBXYQdDChmGV4C/lights/19/state', 'application/json', '{"on":true}', nil);
end;

procedure OnOffAir;
begin
  HTTPPutRaw('https://192.168.178.65/api/YFX86CrQISptZ7ePraBUgzm49RqBXYQdDChmGV4C/lights/19/state', 'application/json', '{"on":false}', nil);
end;

begin
end.