IHC (Intelligent House Control) blev opfundet af LK (Lauritz Knudsen) i 1991. Og er videreudviklet siden da. Indtil august 2023, hvor de lige pludselig meldte ud, at de ikke længere kunne levere controllere, som ellers er hjertet i systemet. De lovede at melde en fremtidig løsning ud, men det er ikke sket i skrivende stund et år senere.
Hvad er IHC?
Som navnet antyder, er meningen med IHC at styre lys m.v. (dvs. også varme, gardiner og alle mulige andre fysiske ting og sager i et hus) på en lidt mere sofistikeret måde end med gammeldags lyskontakter.
En IHC installation er meget anderledes en en konventionel el-installation, idet alle lampesteder og alt andet, der skal kunne tændes, slukkes, dimmes m.v. er forbundet direkte med en ledning hen til en central el-tavle et sted i huset. Og det samme er de lavvolts-tryk, sensorer m.v., der sidder rundt omkring i huset i stedet for lyskontakterne. I samme eltavle sidder IHC installationen, som udgøres af en controller (dvs. en lille computer), nogle output moduler (egentlig en klump relæer), der tænder og slukker for strømmen til lampesteder, dimmere osv. osv., nogle input-moduler, der modtager input fra lavvoltstryk, sensorer osv. samt en 24 volt strømforsyning.
De nyere generationer (fra 2006 og fremad) kan også inkludere IHC Wireless enheder, dvs. stikkontakter, lampesteder, batteridrevne “lyskontakter” m.v., som er forbundet trådløst til controlleren.
Den helt store pointe med en IHC installation er, at man kan programmere alt muligt logik, som både kan tidsstyre og som kan bestemme hvilke inputs, der skal påvirke hvilke outputs eller kombinationer af outputs.
Tænk på en gammeldags el-installation, hvor der er en lang gang, hvor lyset kan tændes og slukkes i hver ende af gangen, fordi der er trukket ekstra kabler og anvendt specielle korrespondance lyskontakter.
Eller en opgang, hvor trappelyset kan tændes på hver etage og går ud igen efter nogle minutter, fordi der et installeret et fysisk timer- og relæ-modul.
Dette og rigtig meget mere kan man programmere sig frem til i alle generationer af IHC controllere. Og man kan f.eks. programmere en stikkontakt til at tænde og slukke udendørs (jule-)belysning på klokkeslæt.
Controller typer
Igennem tiden har der været 4 forskellige generationer af controllere. Specielt i 2006 skete der noget nyt på den front, idet Visual 2 controlleren kom frem. Se https://www.ihc-user.dk/forum/forums/topic/11132-hvilken-controller-har-jeg/
Visual 2 controller.
Indtil da skulle controlleren “programmeres” via et RS.232 stik, og det var i princippet ikke muligt at styre sit hjem fra andet end de svagstrømstryk, der er forbundet via input moduler til controlleren Eller den fjernbetjening, der også kunne købes. Men læs videre. Jeg har i snart 10 år styret min generation 1 controller fra min iPad.
Med Visual 2 controlleren blev RS.232 stikket udskiftet med et USB stik og der blev introduceret et Ethernet / LAN stik, så controlleren kan tilgås via lokalnettet og internettet, hvis man tillader det.
Og allerede med Visual 1 blev den måde, man programmerer controlleren, mildest talt noget anderledes. I første generation foregår det med en simpel terminal emulering, hvor man kun bruger tastaturet. Og programmeringen foregår på den måde inde i controlleren. LK leverede et terminal emuleringsprogram ved navn TermIHC. Dette program er MS-DOS baseret, hvilket ikke umiddelbart understøttes af nyere Windows versioner. Men det er der råd for. Se senere.
Med Visual controllerne foregår det via rigtige Windows programmer (fra LK), der kører på en PC, hvor man bruger både mus og tastatur til at konstruere et helt program, som dernæst kan uploades til controlleren. Visual 1 programmet kan imidlertid ikke køre på nyere Windows versioner end XP. Visual 2 og 3 kører fint på Windows 11. Men hvad der sker i fremtiden, må fremtiden vise. I virkeligheden er det kun første generation controlleren, der er rigtig fremtidssikret, fordi den ikke er begrænset af Windows versioner.
Programmering af de to første controllere er lidt af et problem for dem, der ikke tør at gøre det selv. Ikke mange elektrikere vil røre dem med en ildtang. Men det er nu ikke så svært – i hvert fald ikke med generation 1: Man starter med at købe et USB-RS.232 kabel. De findes allevegne i alskens Web-shops. Og så læser man de følgende afsnit.
Med generation 1 controlleren (1991-2001) var det meningen, at man skulle bruge TermIHC programmet (fra LK), som var og er MS-DOS baseret. Men man kan bruge et standard terminalemuleringsprogram.
Generation 1 controller.
Til generation 2 (med navnet Visual 1) (2001 – 2006) skal man bruge et Windows baseret program fra LK. Der findes mig bekendt ingen alternativer. Og det er værre, for det virker kun til og med Windows XP.
Generation 2 / Visual 1 controller.
Fra og med Visual 2 controlleren (2006 – 2017) understøttes i hvert fald Windows 11. Og administration m.v. foregår via en browser på en PC via USB stikket eller via lokalnettet. Der er vist et eller andet problem med nyere Java versioner, men det findes der et par “patentløsninger” på. Dels har LK lavet et program, de kalder JavaStarter og dels er der denne https://jemi.dk/ihc/starter/
Jeg ved ikke, hvordan man løser problematikken for Visual 1 controlleren (2000-2006). Jeg forestiller mig, at man kan køre Windows XP i en “Virtual Machine” på en nyere Windows. Det er i sig selv nemt nok. Se f.eks. https://youtu.be/hJuWxrgw7wQ?si=2EaiZXZPFgbltynT eller https://www.makeuseof.com/tag/download-windows-xp-for-free-and-legally-straight-from-microsoft-si/. Men jeg har ingen ide om, hvorvidt Visual 1 softwaren fungerer inde i det miljø. Jeg har ikke sådan en controller.
Derimod har jeg flere gode løsninger for den helt gamle controller (1991-2000). Se senere.
Programmering af første generation (1991-2000)
Jeg bruger minicom på en Raspberry Pi til at programmere min controller. Og jeg bruger en SSH app på min iPad til at logge ind på samme Raspberry Pi. Her er et screenshot af resultatet:
Det kan godt være, at det lyder lettere kompliceret. Men det er nu ret enkelt:
- iPad
- SSH app
- Raspberry Pi
- USB-RS.232 kabel
- minicom
Og hvis man “kun” er til Windows, så kan Tera Term terminal emulatoren løse samme opgave. Og der findes også måder at få det gamle TermIHC program til at køre på en ny PC i 2024. Se senere.
Det er lidt en smagssag, om man kan leve med denne lidt gammeldags brugergrænseflade, eller om man må og skal have den lidt mere moderne udgave i de nyere controllere. Jeg kan godt lide den gamle, fordi man ikke behøver at bruge en mus, men derimod med ganske få tastetryk kan foretage programmeringen af f.eks. IHC systemets reaktion på et input. Men der er ingen farver og grafik.
Jeg har faktisk købt en Visual 2 controller, fordi der ikke skal sidde en generation 1 controller den dag vi sælger huset. For køberne vil med stor sandsynlighed henvende sig til en elektriker for at få ændret et eller andet. Og så har vi balladen, når elektrikeren vender det hvide ud af øjnene og siger, at hele el-installationen skal skiftes ud.
Men jeg synes altså ikke, at det bliver spor nemt at programmere Visual 2 controlleren op. Der er ingen steder, hvor man kan få et ordentligt overblik. Og man skal klikke sig (med musen) frem til en meget stor mængde dialogbokse, hvor masser af data skal indtastes i små bidder.
Jeg ville meget hellere programmere en generation 1 controller. Det ville kræve nogen tastetryk. Og det ville kræve et stykke papir og en blyant, hvor input og output port numre i hele huset skrives. Men det er noget nemmere at få totaloverblikket over sammenhængen mellem input og output porte.
Programmering af Visual 2 og 3 (2006-2023)
Her bruges LKs Visual PC software for at programmere, og ovennævnte IHCStarter for at komme ind i administrator eller service views. Her er en side fra manualen:
Som det ses er ideen, at alle inputs og outputs er i venstre side og logikken til at binde dem sammen er i højre side. Logikken er udtrykt i form af funktionsblokke, som der findes en hel del af “out of the box”. Det gør der også i første generation controlleren. Der kaldes det bare “funktioner” (uden “blokke”). Men i Visual 2/3 kan man selv tilføje yderligere funktionsblokke ved at gå ind i en egentlig programmeringsmenu.
Derudover kan man naturligvis inkludere IHC Wireless komponenter. Det kan man ikke i første generation eller i Visual 1 (1991-2001 hhv. 2001 – 2006).
Som det ses er der både farver og grafik. Men til gengæld er der meget skiften mellem mus og tastatur. Så jeg synes egentlig ikke, at de nyere generationer er mere brugervenlige end den gamle. Men det er lidt den gammelkendte diskussion mellem kommandolinie-elskere og -hadere om igen.
Styring af hjemmet fra iPad / tablet / telefon
Indtil videre har det mest handlet om at styre de outputs, der er forbundet til IHC controlleren fra de inputs, der ligeledes er forbundet til IHC controlleren Lad os vende blikket imod andre muligheder, som mange har den misopfattelse, at der ikke findes med en generation 1 controller. Men det kan sagtens lade sig gøre:
- Styring af andre dimser og dingenoter (f.eks. Philips Hue, IKEA smart home lys og gardiner, Zigbee enheder, Shelly dimmere osv. osv. fra de IHC tryk, der allerede sidder på væggen og ligner lyskontakter.
- Det modsatte, nemlig at styre IHC output – altså lampesteder, spots, udendørs lys osv. fra f.eks. en IKEA bevægelsessensor.
- Se en tegning over huset og styre det hele – IHC og alt muligt andet – fra en iPad / tablet / telefon.
Fra og med Visual 2 er der som nævnt et Ethernet interface i controlleren. Og hvis det er versionen med Viewer (i starten kunne den fås uden), så indeholder den også en WEB server, så man kan konfigurere controlleren op til at vise netop en oversigt over huset, hvor man kan se, hvor i huset lyset er tændt. Foruden at man også kan tænde og slukke lyset. Og den oversigt kan man se i en LK app, som indtil udgangen af 2024 kan købes for 230 kroner eller deromkring. Eller man skulle også kunne se det i en browser.
Derudover findes der et ganske gratis system kaldet IHCCaptain, som kan det samme (i en browser) og endnu mere, nemlig også Philips Hue m.v. Se https://jemi.dk/ihc/
Jeg gør dog også det samme og endnu mere – på en generation 1 controller. Det ser således ud på min (bortset fra, at dette ikke er mit hjem) iPad (eller PC eller hvorsomhelst der er en browser):
Til det bruger jeg:
- En Raspberry Pi (den samme som jeg bruger til minicom + RS.232)
- USB-RS.485 dongle
- Domoticz
- IHC server
- IHC server plugin til Domoticz (som er mit bidrag til “festen”)
- Andre plugins til Domoticz for at styre andre dingenoter
Desuden har jeg tilføjet stemmestyring af (udvalgte) lampesteder, mit TV m.v. Til den ende bruger jeg:
- En Google højttaler (faktisk mere end en)
- Homebridge
Lad os gennemgå det hele bid for bid:
USB-RS.485 dongle
Hvorfor RS.485? Og hvad er det?
Hvis man ser på hvilke tilslutningsmuligheder, der er på IHC controllerne, så vil man finde ud af, at RS.485 går igen på samtlige generationer. Og med det samme formål, nemlig at kunne tilslutte et modem og noget andet, som giver mulighed for at følge med i og påvirke tilstandene for alle inputs og outputs. Så derfor.
RS.485 er en seriel bus. Dvs. to ledninger, hvor man kan tilslutte flere enheder. I modsætning til RS.232, som er punkt til punkt, dvs. to og kun to enheder.
Problemet med RS.485 interfacet er, at det er en LK hemmelighed, hvordan der signalleres på bussen. Men det er der heldigvis nogen med et oscilloskop, der har afsløret. Og senere andre endnu, der har udnyttet til at lave nedennævnte IHC server.
Selve USB-RS.485 er et billigt stykke hardware, der kan købes på diverse elektronik sites fra Kina eller Europa. Den kan eksempelvis se således ud:
Min Raspberry Pi med RS.485 dongle for oven på billedet og en RS.232 HAT for neden:
Domoticz
Domoticz er et stykke gratis open source software, der udgør et home automation system, hvor man kan integrere alt muligt i. Det sker ved hjælp af plugins. Der findes andre lignende systemer. De fleste af dem ligeledes open source og dermed gratis. Jeg har valgt Domoticz, fordi der er et stort community, der holder det i live og fordi der tilsyneladende allerede da jeg valgte det fandtes plugins til rigtig mange forskellige typer dingenoter. IHC var dog ikke en af dem. Så der måtte jeg selv gøre noget aktivt for at bidrage. Se nedenfor.
Domoticz har en hjemmeside med WIKI m.v.: https://www.domoticz.com/
Groft forenklet består Domoticz af:
- En service, der kommunikerer via plug-ins til det hardware, der skal styres og overvåges.
- En WEB server med tilhørende client, der kan køre i en browser på f.eks. en iPad.
- Plug-ins til specifikke typer af hardware, f.eks. Philips Hue, Nilan ventilation – eller IHC. Der er en lang liste beskrevet i WIKIen. Og der findes mange flere, hvis man googler efter dem.
Som beskrevet på forrige side bruger jeg bl.a. Zigbee2MQTT for at få forbindelse til diverse sensorer, smart pærer osv. F.eks. IKEA trådfri. Jeg bruger f.eks. IKEA sensorer til at tænde og slukke IHC lampesteder, ligesom jeg bruger IHC tryk til at styre smart pærerne.
I starten downloadede jeg source koden og byggede Domoticz selv. Men det er der ingen grund til. For nuværende downloader jeg de binære (altså allerede byggede) releases. Og snart går jeg nok over til at installere via Docker containere.
IHC server
Dette er kernen i min løsning på at styre IHC sammen med andre dimser og fra min iPad.
Også dette er open source. Det kan findes i den originale udgave her: https://github.com/skumlos/ihcserver eller i min lettere modificerede udgave her: https://github.com/kjlisby/ihcserver
Begge steder er det C++ kode. Men der ligger en trin for trin anvisning på, hvordan man bygger det. Så man behøver ikke at kunne programmere. Se https://github.com/kjlisby/ihcserver/blob/master/MANUAL
Måske producerer jeg på et tidspunkt en Docker container, så det er nemmere at installere og konfigurere en IHC server.
IHC server indeholder disse dele:
- En service, der kommunikerer med IHC controlleren via RS.485 interfacet.
- En WEB service med tilhørende client, der kan køre i en browser på en iPad eller andre steder.
- Nogle hooks, som bruges af nedenfor beskrevne plugin til Domoticz.
IHC server plugin til Domoticz
Se https://github.com/kjlisby/domoticz-ihc-plugin
Det skulle gerne sige alt.
Homebridge
Dette er endnu et home automation system. Det kunne sandsynligvis bruges i stedet for Domoticz. Men jeg bruger det sammen med Domoticz for at skabe forbindelse til min Google højttaler, således at jeg kan stemmestyre alt hvad jeg vælger at eksportere fra Domoticz til HomeBridge. Denne tegning er et forsøg på at illustrere setup’et:
Jeg bruger disse tre plug-ins til HomeBridge:
- Homebridge UI: Et WEB-baseret administrator UI til HomeBridge.
- Homebridge Google Smart Home: Skaber forbindelsen (via en server ejet og drevet af HomeBridge) til Google Assistant.
- Homebridge Edomoticz: Skaber forbindelsen til Domoticz.
Jeg kan dårligt huske, hvordan jeg fik det op at køre. Men det var ganske nemt. Det var noget med at følge installationsvejledningen til HomeBridge og dernæst downloade og konfigurere de nævnte plug-ins inde fra HomeBridge. Eller måske har jeg fulgt denne anvisning? https://www.domoticz.com/forum/viewtopic.php?t=10272
Tanker omkring iPad / tablet / telefon
Den opmærksomme læser vil indse, at der er mange steder på min iPad, hvorfra jeg kan styre lyset:
- I SSH app’en, hvorfra jeg kan forbinde mig via minicom til IHC controlleren og tvangsstyre alle udgange (kun generation 1).
- I en browser via WEB-serveren på IHC controlleren (kun Visual 2 og 3).
- I LK app’en (hvis man altså skynder sig at ofre pengene inden udgangen af 2024) (kun Visual 2 og 3 – muligvis i praksis kun Visual 3, for Visual 2 understøtter ikke nyere IOS versioner).
- I en browser via IHC server.
- I en browser via Domoticz. Her kan man også samtidig styre alt muligt andet end IHC.
- I Domoticz app’en (som findes – jeg har dog ikke følt behov for at prøve den).
- I en browser via HomeBridge.
- I HomeBridge app’en (som findes – jeg har dog ikke følt behov for at prøve den).
- I Google Home App’en. Også her sammen med alt muligt andet. Faktisk endnu mere end i Domoticz.
Til daglig bruger jeg kun Domoticz i en browser samt stemmetyringen via Google højttaleren. Men resten af stakken er god at have, når noget ikke fungerer, og jeg skal finde ud af hvorfor.
Programmering og administration af den helt gamle controller anno 2024
Som allerede nævnt ændrer jeg på programmeringen af min generation 1 controller via et terminalemuleringsprogram fra en Raspberry Pi. Med det kan jeg alt det TermIHC kan, undtagen at printe rapporter ud. Jeg bruger terminal emuleringsprogrammet minicom på den Raspberry Pi, der alligevel er tilsluttet min IHC controller. Tera Term på Windows fungerer også fint.
Backup / restore fra et terminalemuleringsprogram fungerer på den måde, at man først går ind i IHC controllerens service menu og vælger funktionen, hvorefter man bruger terminalemuleringsprogrammets menu til at starte enten læsning eller skrivning af en fil fra/til controlleren via XMODEM protokollen. Og det kræver naturligvis et terminalemuleringsprogram med XMODEM funktionalitet, hvilket både minicom og Tera Term har. Men f.eks. Putty har det ikke. I hvert fald ikke “out of the box”.
Men det er selvfølgelig irriterende, at man ikke kan printe en rapport ud. Så derfor måtte jeg naturligvis ofre en lørdag på at få TermIHC til at køre på min Windows 11 PC.
Jeg begyndte med TermIHC inde fra DosBox, som beskrevet her: https://www.ihc-user.dk/forum/forums/topic/6700-termihc-13c-p%C3%A5-windows-10/. Jeg kunne dog ikke få data backup funktionen til at fungere, fordi jeg ikke havde en backup fil i forvejen. Og af uvisse årsager får det TermIHC til at dø med en run-time fejl. Og rapportudskrivningen fungerede heller ikke af samme årsag. “Kvik” rapporten fungerer i det hele taget ikke fra DosBox. For det kræver en parallelport på PC’en, som jeg aldrig har set på en nogenlunde moderne PC. Bevares – det kan købes til en desktop PC. Men det vil nok være svært at finde en printer med en parallelport.
DosBox-X er dog løsningen på det problem. For der kan man omdirigere output til LPT1 og LPT2 til en tekstfil. Så dermed fik jeg “Kvik” udskrivning til at virke.
Men det var dog stadigvæk en noget pauver løsning, fordi jeg ikke kunne tage backup.
Derfor tænkte jeg at følge LKs anvisning:
Men hvordan får man lige Windows XP i 2024? Nemt nok. Løsningen hedder VirtualBox. Der kan man køre Windows XP i en VM (Virtual Machine). Se https://youtu.be/hJuWxrgw7wQ?si=hLbK69cHB_0Wy0cX.
Anvisningen i videoen er udmærket. Jeg fik Windows XP op at køre. Og jeg fik Windows XP til at bruge mit USB til RS.232 kabel. Jeg fik sågar TermIHC til at få anvisningen om at trykke ESC til at blinke rundt på skærmen. Men jeg fik aldrig sendt data den anden vej. Så ingenting fungerer.
Men når nu jeg havde VirtualBox, hvorfor så ikke undersøge, hvad der ellers kan installeres. Og sørme om ikke man kan installere MS-DOS 6.2: https://youtu.be/e7HybYutMpA?si=tDWL0oeV4TCPnjsq.
Det var sådan set meget nemt at få DOS installeret. Men så skulle jeg jo også have TermIHC ind i den virtuelle kasse. Og DOS kender intet til netværk eller andre måder at dele data med Windows 11. Så fuldstændig på samme måde som jeg installerede DOS fra virtuelle disketter, så må data også udveksles mellem DOS og Windows 11 via virtuelle disketter. Og VirtualBox har faktisk en funktion til at skabe en tom virtuel diskette i form af en .img fil. Men den kan til gengæld ikke mountes i Windows 11, som intet kender til DOS formatterede disketter. Det tog mig lidt tid at knække den nød. Men det slog mig, at DosBox har en kommando til det (IMGMOUNT A FILNAVN.IMG -t Floppy). Og det virkede. Dermed kunne jeg vha. DosBox kopiere filer mellem den virtuelle diskette og Windows 11. Det samme kan i øvrigt gøres vha. Windows XP inde i VirtualBox. Og den virtuelle diskette kan dernæst indsættes i DOS computeren inde i VirtualBox. Det kræver lidt fantasi. Men det giver mening, når man ved, hvordan en PC fungerede i de gamle DOS dage.
Da jeg havde TermIHC inde i den virtuelle DOS PC var mine problemer til gengæld løst. Nu kunne jeg lave en rigtig TermIHC backup fil. Og med den fungerer navngivning af ind- og udgange m.v. også. TermIHC kører som en drøm. Det eneste, der ikke virker, er parallelporten. Så Kvik-udskriften må foretages fra DosBox-X.
Samme DosBox-X fungerer i øvrigt også nu mht. backup m.v. For nu har jeg jo en backup fil, som TermIHC kan læse.