Zoals wellicht meer mensen hier heb ik een KaKu ICS-1000, die steeds verder wordt gekortwiekt en steeds brakker functioneert. Ik wil dus graag over naar iets als Home Assistant.
Op mijn ICS-1000 heb ik nogal wat KaKu verlichting zitten, die ik niet in één keer wil vervangen door een moderner communicerend spulletje. Dus ik zou iets als een RFXCom kunnen kopen, maar da’s een pittige uitgave voor de oude KaKu spullen die ik heb. En ik heb al een ICS-1000, beetje zonde geld. Aangespoord door de openingsposts van DJSmiley ben ik wat gaan klooien zodat ik de ICS-1000 kan gebruiken als hub tussen een Home Assistant bak en de KaKu verlichting.
Ik dacht, ik leg de hele reis even vast voor mijzelf en misschien voor andere geïnteresseerden.
Babbelen met de ICS-1000
Zoals DJSmiley uitlegt, is het redelijk eenvoudig te babbelen met de ICS-1000. Aangezien mijn server Linux praat ben ik aangewezen op netcat. Ik heb nogal even nodig gehad succesvol een verbinding te leggen omdat netcat standaard via TCP praat, en de ICS-1000 graag via UDP praat. Daarnaast moest ik direct met het IP van de ICS-1000 praten, een broadcast over 192.168.255.255 wilde niet.
Je opent dus de communicatie met de ICS-1000 met het volgende commando:
code:
1
| nc -u 192.168.xxx.yyy 9760 |
met de switch -u geef je aan dat het een UDP pakketje moet zijn. Het IP-adres is het adres van de ICS-1000, 9760 is het poortnummer waarop de ICS-1000 luistert naar pakketjes. Vergeet niet om naast de ICS-1000 te gaan zitten zodat je de pairing met de Home Assistant server kan bevestigen!
Vervolgens zie je een lege regel, waar je commando’s in kan tikken. Dit heeft DJSmiley goed uitgelegd, dus ik verwijs naar de tweede post in dit topic.
Je kan de reeds in de ICS-1000 geprogrammeerde scenes gebruiken, maar ik vond het prettiger alle intelligentie in Home Assistant te bakken. Als je dan een moderne lamp toe wilt voegen aan een bestaande scene, dan kan dat.
Deze acties werkten. Nu de volgende uitdaging: ik wilde als eerste stap proberen vanuit CRON commando’s af te vuren. Daartoe moet je het openen van de connectie én het versturen van het bericht in 1 commando vangen. Na wat gegoogle kwam ik op de volgende syntax uit:
code:
1
| echo -n '001,!R1D2F0|Set Lamp 2 voor|to Uit|' | nc -u -w 1 192.168.xxx.yyy 9760 |
De switch -w 1 is ervoor om de communicatie met de ICS-1000 na 1 seconde te verbreken, anders blijft deze open staan.
Lang verhaal kort, deze syntax werkte in CRON, er werden netjes lampen in- en uitgeschakeld op de juiste tijden. Nu Home Assistant zo ver krijgen!
Home Assistant - tests
Home Assistant - Supervised geïnstalleerd in een Docker container op mijn servertje. Beetje steile leercurve, zeker als je meteen begint met allerlei niet-standaard wensen, zoals het afvuren van shell commando’s om lampen aan te zetten 😊 Ook vervelend dat de Supervisor niet lekker werkt, maar goed, ik bleek het niet echt nodig te hebben.
Ik ben begonnen de shell commando’s te verwerken in een bestand ‘shell_commands.yaml’. In ‘configuration.yaml’ moet je dus deze regel toevoegen:
YAML:
1
| shell_command: !include shell_commands.yaml |
Inhoud van het bestand ‘shell_commands.yaml’:
YAML:
1
2
| kamer1_lamp1_aan: echo -n '001,!R1D1F1|Set Lamp 1 voor|to Aan|' | nc -u -w 1 192.168.1.3 9760
kamer1_lamp2_aan: echo -n '001,!R1D2F1|Set Lamp 2 voor|to Aan|' | nc -u -w 1 192.168.1.3 9760 |
et cetera. Nu kun je via de Ontwikkelhulpmiddelen - Services testen of het e.e.a. werkt.
Ik heb gedurende wat troubleshooting (ik snap de ballen van docker) dit commando uitgevoerd:
code:
1
| sudo iptables -A INPUT -i docker0 -j ACCEPT |
Met als reden het mogelijk te maken van communciatie met mijn lokale netwerk. Ik weet niet zeker of dit nodig is, maar aangezien ik dit heb uitgevoerd wil ik het vermelden.
Home assistant – switches toevoegen
Ik heb vervolgens al mijn lampjes toegevoegd als ‘switches’, voornamelijk omdat ik daarvoor een redelijk leesbaar tutorial voor kon vinden 😊
Ik heb deze regel aan ‘configuration.yaml’ toegevoegd:
YAML:
1
| switch: !include switch.yaml |
En de inhoud van switch.yaml is:
YAML:
1
2
3
4
5
6
7
8
9
10
| - platform: command_line
switches:
voor_lamp_1:
command_on: "echo -n '001,!R1D1F1|Set Lamp 1 voor|to Aan|' | nc -u -w 1 192.168.xxx.yyy 9760"
command_off: "echo -n '001,!R1D1F0|Set Lamp 1 voor|to Uit|' | nc -u -w 1 192.168.xxx.yyy 9760"
friendly_name: Eerste lamp voorkamer
voor_lamp_2:
command_on: "echo -n '001,!R1D2F1|Set Lamp 2 voor|to Aan|' | nc -u -w 1 192.168.xxx.yyy 9760"
command_off: "echo -n '001,!R1D2F0|Set Lamp 2 voor|to Uit|' | nc -u -w 1 192.168.xxx.yyy 9760"
friendly_name: Tweede lamp voorkamer |
Et cetera.
Verder…
Nu zitten de lichtschakelaars dus als schakelaars in Home Assistant en kun je deze via de GUI, Automations en wat niet meer benaderen. Ik heb mijn bestaande scenes nagemaakt in Home Assistant en (na wat gedoe) werkte het ongeveer als tevoren, met uitzondering dat de timers nu wel betrouwbaar zijn 😉