Inlämning av: Marcus Warrington Introduktion Som praktiskt taget alla tillgängliga UK X10 -moduler stöder LD11 inte statusrespons. Detta i kombination med det faktum att X10 -kommandon i vissa fall kan “gå vilse” och till synes försvinna i den elektriska etern innan den valda enheten når, innebär att spårningen av den aktuella statusen för en enhet är mycket felbenägen.
Intelligenta styrenheter som HomeVision och programvara som Homseer gör en tapper ansträngning för att spåra den aktuella statusen för enheter genom att lyssna på X10 -signalerna på tråden men kommandon är i vissa fall inte hörda eller kan vara misshandlade och alla enheter som är lokalt kontrollerade kommer att ha sin Staten ändrades utan att statusändringen tillkännagavs på tråden. Den här sista punkten var en riktig buggbjörn för mig, jag visste bara inte om någon hade tänt på ett ljus för hand.
Den möjliga tjänsten En ny tjänst till detta problem är användningen av Frank McAlindens sondsystem. Detta system utvecklades ursprungligen för att tillåta HomeVision att få den aktuella statusen för A/V -utrustning i flera zoner (se den här artikeln), men Frank har nu utvidgat detta med en sond som använder en mycket ljus vit LED och detektor utvecklad för att läsa Status för en LD11 -enhet.
Hårdvaran
Probe Zone Hub (PZH) – Detta ansluter antingen direkt till HV -enheterna interna portar, eller genom Franks HomeVision I/EXPANDER (till HomeVision Internal Bus) eller genom det seriella gränssnittet (9600 Baud). Probe Zone Hub erbjuder kraften (12V) och hämtar statusen för någon av sondzonskärmarna bifogade sonder. Upp till 8 sondzonmonitorer kan fästas till ett enda sondzonnav. Detta ger potentiella totalt 48 enheter som kan frågas.
* Det borde noteras att systemet kräver att användaren levererar sin egen 12V -strömförsörjning (mittstiftpode).
Sond Zone Monitor (PZM) – Varje sondzonmonitor kan övervaka 6 olika enheter eller 4 enheter och 2 Dallas -termometerprober. Varje sondzonskärm ansluter till PZH genom en enda bit konventionell CAT5 -kabel. Detta erbjuder kraft och kommunikation med sondzonmonitorn och gör det möjligt att distribuera sondzonens monitorer runt hemmet på praktiska punkter.
LED -sonden – Detta upptäcker när enheten är på (vanligtvis genom att upptäcka enhetens på/av -LED på enheten, men i vårt fall upptäcker de den mycket ljusa vita LED -lysdioden ansluten till LD11). Du behöver en av dessa per LD11. Varje sond är ungefär 1 meter lång med en stereohack i ena änden och en mono -jack på den andra. Stereo Jack ansluter till baksidan av sondzonskärmen medan Mono Jack ansluter till LED -modulen.
Super Bright LED -modul – Detta ansluter till utgången från LD11, och du behöver en av dessa per LD11 -modul. LED (och detektorn) är inrymda i en 16 mm skruv ihop plastcylinder. Detta ger effektivt opto -isolering mellan LD11 (högspänningsutgången) och sondsystemet (12 volt).
Frank säljer också dessa i kitform för dig att göra dig själv.
HomeVision io expander
Ansluts direkt till HV -buss (eller via seriegränssnittet) och gör det möjligt för HV att kommunicera med PZH -enheten via IC2 -bussen.
Mutli -sondadapter – En enkel svart låda som låter dig övervaka flera LD11 genom en enda sondingång på PZM. Detta kan vara till hjälp om du har flera ljusbanker i ett rum (scenbelysning) och du bryr dig inte om att veta vilka ljusbankar som faktiskt är på, bara att åtminstone en av dem är på.
Byggkvalitet – Det första som slår dig om hårdvaran är den mycket professionella finishen och byggkvaliteten på enheterna. Varje enhet är professionellt graverad med blekta bokstäver på sin frontpanel som beskriver portarna och statuslamporna. Enheterna har en stark och funktionell känsla av det, varje enhet har till och med sitt eget serienummer, streckkod och garantiinformation etikett bifogad.
Anpassning av de mycket ljusa vita LED -modulerna – varje modul kräver borrning av ett litet 16 mm hål i konsumentenheten över varje LD11. LED -modulerna består av två plasthalvor som skruvar ihop. En sida av enheten har den mycket ljusa lysdioden och har två ledningar (live och neutrala) för anslutning till LD11 -modulen. Den andra hälften har LED -detektorn och har ett jackuttag för anslutning till PZM -enheten.
Denna metod håller lågspänningskomponenterna separerade från högspänningskomponenterna inuti konsumentenheterna. Jag rekommenderar att du använder en 16mm träborr för att göra de nödvändiga hålen i konsumentenheterna, eftersom det spetsade förslaget låter dig exakt placera där hålet kommer att vara
Min installation – Min X10 -installation är en eftermonteringsaffär och som sådan finns LD11 på 3 olika platser runt huset, vindskåp, skåp på första våningen och över den hängande matsalen.
Eftersom varje PZM är ansluten till då PZH via konventionell CAT5 (för både kraft och status) antydde detta att jag kunde placera PZM: er på var och enDessa platser och ansluter dem tillbaka till PZH som var beläget på en separat plats bekväm för min Homevison. Så småningom flyttas Homevison och PZH till min node0 (när jag är klar).
För att starta projektets rullning valde jag att koncentrera mig på bara en plats och se hur det gick. Skåpet under trappan på första våningen innehåller fyra konsumentenheter som har 13 LD11 -moduler; Dessa matar alla sovrum på första våningen, badrummet, hallen och landningar och främre rum. Jag har hittills monterat 6 av sonderna som täcker de viktigaste sovrummen och hallarna
Att koppla till HomeVision – Detta är en ganska enkel procedur men innebär att man öppnar upp HomeVision -enheten för att fästa HV IO -bandkabel -tv till HV -bussen genom ett tryck på blockkontakt. Den som någonsin har anslutit en IDE -enhet till en dator borde inte ha några problem att göra detta. Den andra änden av denna bandkabel -tv behöver sedan ansluta inuti HV IO -expander i en liknande procedur. HV IO Expander ansluter sedan helt enkelt till DB9 -mananslutningen på baksidan av PZH. Det finns också ett RJ12 -kontakt på framsidan av enheten som faktiskt är ett seriekontakt för att kommunicera med enheten via en seriell port (mer om detta senare)
När allt är anslutet (och allt dubbelkontrollerat) är det dags att skriva lite kod och testa allt. Testa sonderna från HomeVision Software Frank’s HV IO Expander använder HomeVison IC2 -bussen och kräver en registerlapp för att möjliggöra åtkomst till den, men om du använder HomeVisionXL istället för HomeVisions Original -programvaran så borde inställningen ändras i HomeVisionXl .ini -filen istället.
Sonder -statusen utvärderas genom att polla HV IO -expander med den kod som anges i dokumentationen. När koden har angetts är testning av en sondstatus helt enkelt en fråga om att ställa in ett par variabler (sondnummer och zonnummer), ringa makro och sedan testa flaggan (sondstatus). Hela processen tycktes ta ungefär ½ sekund från början till slut.
Det första testet var att helt enkelt testa statusen för ett enda ljus genom att köra makro för att undersöka statusen för en viss sond. LED -proberna är mycket känsliga och kan upptäcka att ett ljus tänds även när det är vid sin lägsta svaga inställning.
Ursprungligen rapporterade PZM (och PZH) ljuset som kontinuerligt på, dess LED -ljus visade rött, tills jag förstod att jag hade anslutit sonden på fel väg runt. Stereo Jack ansluts till PZM och Mono Jack -änden ansluts till LED -modulen.
Det andra testet var att kontinuerligt köra detta makro var tredje sekund för att uppdatera en statusflagga inom HomeVision och återspegla ljusets status till lamporna i vädjan. Detta fungerade briljant och tillät bordslamporna att komma automatiskt (inom 3½ sekunder) efter att någon slog på huvudljuset.
Skrik om du vill gå snabbare – efter att ha sett hur användbart det var att kunna spåra en lampstatus och spegla den till en bordslampa, började jag försöka använda den seriella anslutningen för att erbjuda en snabbare återupplivning av sondstatus. Anledningen till att detta skulle vara snabbare är att serieprotokollet tillåter testning av alla sonder på en zon i en begäran och reaktionsmeddelande.
Sondenheten använder ett enkelt men effektivt seriellt protokoll som består av några ASCII -tecken, avslutade av en enda vagns returkaraktär.
t.ex. “#QA1 (CR)” = Frågestatus för alla sonder på zon 1
t.ex. “#Q14 (CR)” = Frågestatus för sond 4 i zon 1
PZH svarar med;
t.ex. “#RA1: YNYYYN (CR)”. Där ynyyyn är statusen för varje sond 1 – 6.
t.ex. “#R14: Y (CR)”
Jag har inte en andra serieport på min HomeVision -enhet, jag ställde in en enkel procedur där en IR -fjärrkontroll kunde växla in den inbyggda HV -kommissionsporten mellan att användas för att fråga HV på en konsekvent bas (med en baudhastighet 9600) och återgå till en normal Kontrollport ansluten till datorn (med en baudhastighet 19200).
Koden för att växla den inbyggda serieporten är ganska enkel; vid mottagning av en känd IR -signal.
Om
Timer #8 (probehub_serialscanningimer) stoppas
Sedan
; Slå på – Sond Hub Serial Scanning
; ———————————————
Controller Command: Inaktivera Master Report -läge
Controller Command: Ställ in baudhastighet till 9600
;
; Ställ in bit0 för att flagga att Lastestate är okänd och borde initialiseras
; Detta innebär att en händelse kommer att avfyra för varje sond för det första samtalet
Ställ in bitar 0 i VAR #5 (ProBescan_Zone1_LastState)
;
Lasttimer #8 (probehub_serialScanningTimer) med 0: 00: 01: 00 och start
;
Controller Command: Slå användar LED på
Annan
; Stäng av – Probe Hub Serial Scanning – återgå till HV -kontroll
; ——————————————————————————
Stoppa och rensa timer #8 (probehub_serialScanningTimer)
Stoppa och rensa timer #9 (probehub_failsafe_qa #)
Controller Command: Ställ in baudhastighet till 19200
Controller Command: Aktivera Master Report -läge
;
Controller Command: Stäng av användarledd
Slut om
Koden för att begära PZH att skicka status för alla sonder på zon 1 körs automatiskt var tredje sekund via timer #8: probehub_serialScanningTimer;
; Trasnmit “fråga alla PRobes på zon 1 ”
Stoppa och rensa timer #9 (probehub_failsafe_qa #)
Seriell port 1: Sänd sträng ‘#QA1’
Seriell port 1: Sänd byte ‘0D’
;
; misslyckas säkert .. Om navet inte repsonderas på 10 sekunder, återge frågan
Vänta 0: 00: 10: 00 med timer #9 (probehub_failsafe_qa #), sedan:
Om
Timer #8 (probehub_serialscanningimer) stoppas inte
Sedan
Lasttimer #8 (probehub_serialScanningTimer) med 0: 00: 00: 01 och start
Slut om
Avsluta vänta
När en begäran har skickats skickas inget annat förrän en reaktion på frågan har tagits emot. “Probehub_failsafe_qa# timer” används om en reaktion missas och kommer helt enkelt att skicka begäran igen om ingen reaktion tas emot inom 10 sekunder.
Reaktionen på frågan fångas i händelsen “datainmatning” i Serialport 1 i HomeVision. Koden kontrollerar varje sondstatus mot den senaste kända statusen och kallar makro “#5 (ProbestatusChange)” om sondstatusen har ändrats. Koden har förkortats för att endast visa testning av sond 1 för en korthets skull. För att testa de andra sonderna duplicerar helt enkelt “Testsond 1” -koden som ändrar projektet “var #2” och “bittestet” varje gång
; Bit 0 Set = Initialisera LastState, dvs. Call Macro för sondstillståndsförändring oavsett
; bitar 1 -6 är flaggor för att lagra senast känd status så ring bara makro om sondstillståndet ändrats
Om
Timer #8 (probehub_serialscanningimer) stoppas inte
Och seriell port 1: Seriella inmatningstecken nummer 1 till 3 är ‘#ra’
Sedan
Seriell port 1: Sätt värde på mottagen char 4 i resultatvärde
Var #1 (zonbuffert) = resultatvärde
;
; Testsond 1 ———————————————
Var #2 (sondbuffert) = 1
Om
Seriell port 1: Seriella ingångstecken nummer 6 till 6 är ‘Y’
Sedan
; Sond är på
Om
VAR #5 (ProBescan_Zone1_LastState) Bit 1 är inte inställd
Eller var #5 (probescan_zone1_laststate) bit 0 är inställd
Sedan
; Sond har ändrat tillstånd eftersom sista skanningen
Ställ in flagga nr 6 (probescan_state)
Gör makro #5 (ProBestateChanged) en gång
Slut om
Ställ in bitar 1 i VAR #5 (ProBescan_Zone1_LastState)
Annan
; Sond är av
Om
VAR #5 (ProBescan_Zone1_LastState) Bit 1 är inställd
Eller var #5 (probescan_zone1_laststate) bit 0 är inställd
Sedan
; Sond har ändrat tillstånd eftersom sista skanningen
Clear Flag #6 (ProBescan_State)
Gör makro #5 (ProBestateChanged) en gång
Slut om
Rensa bitar 1 i VAR #5 (ProBescan_Zone1_LastState)
Slut om
; —————————————————–
;
; garantera att initialiset nu är tydlig
Clear Bits 0 i VAR #5 (ProBescan_Zone1_LastState)
;
; Starta sekvensen igen genom att skicka begäran om all status ‘
Lasttimer #8 (probehub_serialScanningTimer) med 0: 00: 00: 50 och start
;
Slut om
Marcro #5 ProStateChanged – Detta makro kan sedan användas för att göra vad du vill göra. Jag har konfigurerat koden så att en hyllbelysning tänds och på med huvudljuset.
Om
Flagga nr 6 (probescan_state) är inställd
Sedan
; ‘Ny status är på
Om
Var #1 (zonbuffert) = 1
Sedan
Om
Var #2 (sondbuffert) = 1
Sedan
; 1 = sovrum 1 (Front Box Room)
X-10: A 7 (Bedroom1 hyllbelysning) på
Slut om
Slut om
Annan
; Ny status är avstängd
Om
Var #1 (zonbuffert) = 1
Sedan
Om
Var #2 (sondbuffert) = 1
Sedan
; 1 = sovrum 1 (Front Box Room)
X-10: A 7 (sovrum1 hyllbelysning) tvingas av
Slut om
Slut om
Slut om
Att använda denna metod har antydt att alla 6 sonder i en zon kan skannas på ungefär 1 sekund. Detta jämförs med ungefär ½ sekund per sond (dvs.3+ sekunder totalt) med hjälp av HV IO Expander -metoden.
Multi -sondadapter i min toalett Jag har 6 nedsatta taklampor organiserade i 3 banker av två lampor. Varje ljusbank är kopplad tillbaka till en LD11 -modul, med den enda huvudljusströmbrytaren kopplas till var och en av de 3 LD11 -talet. Anledningen till detta är att (så småningom) jag planerar att ha scenbelysning i toaletten som kontrolleras av IR eller WiFi bildar en pocketpc. Tanken är att jag kunde få lamporna över badet dimmade till 50% medan resten av rummet är dimmat till 10-20% och ger en mycket mer oavsiktlig atmosfär när jag badar och tittar på toalett TV (som jag