Gå til innhold
  • Bli medlem

Godot

Medlemmer
  • Innholdsteller

    79
  • Ble med

  • Besøkte siden sist

  • Dager vunnet

    2

Godot vant dagen sist 19. mai 2018

Godot hadde mest likt innhold!

Nettsamfunnsomdømme

33 Excellent

Om Godot

  • Rang
    Medlem

Hjemmeautomasjon

  • System
    HomeSeer

Nylige profilbesøk

1 032 profilvisninger
  1. Tema er altså å lytte på deCONZ sin websocket-server. Dette er i node.js, og har tatt med bare 1 eksempel hver av temp/fukt og knapp. For å kjøre node.js-ting har jeg tidligere bare brukt node deconz.js & > /dev/null og lignende, men fant ut nå at det finnes en mye bedre løsning, pm2. Det er en prosesscontroller for node som jeg ikke visste om tidligere, og er kjekk for å holde node-ting kjørende kontinuerlig. const WebSocket = require('ws'); const http = require('http'); const host = '127.0.0.1'; const port = 443; const ws = new WebSocket('ws://' + host + ':' + port); ws.onmessage = function(msg) { var d = JSON.parse(msg.data); console.log(d); // Aqara 1 Kjeller // Temp if (d.id == 4) { sendHomeseer(101, d.state.temperature / 100); } // Humidity if (d.id == 5) { sendHomeseer(112, d.state.humidity / 100); } // Aqara Wall Switch 1 if (d.id == 10) { sendHomeseer(118, d.state.buttonevent); } } function sendHomeseer(device, value) { var valuestring = "" + value; var url = 'http://10.0.42.101/JSON?request=controldevicebyvalue&ref='+device+'&value=' + valuestring.replace('.',','); http.get(url, (resp) => { let data = ''; // A chunk of data has been recieved. resp.on('data', (chunk) => { data += chunk; }); // The whole response has been received. Print out the result. resp.on('end', () => { //console.log(JSON.parse(data).explanation); }); }).on("error", (err) => { //console.log("Error: " + err.message); }); }
  2. For noen uker siden så begynte flere av 433MHz-temperaturmålerne mine å droppe ut. Det var ulike modeller, 3 stk Oregon Scientific og 2 stk Clas-varianter. Av og til kontakt, men så dropper alle (bortsett fra den på hovedbadet) ut på samme tidspunkt. RFXtrx-en ser ut til å fungere fortsatt, men rekkevidden er altså svært kort, kanskje 3 meter. Det holder til hovedbadet og noen lys som blir styrt i kontoret rett over der senderen står, men kjeller, vaskerom, utendørs, alt slikt har jeg bare sporadisk kontakt med. Jeg gjetter på at det må være en ny støykilde i nabolaget som forårsaker dette. Jeg har imidlertid funnet meg en erstatning for temperaturmålerne, de utrolig søte og små Zigbee Aqara-sensorene! Jeg har tidligere ikke satset noe på Zigbee, hadde bare én Hue utendørs LED-stripe over inngangsdøra, men var ikke fornøyd med stabiliteten ved å styre denne fra RaspBee. Det endret seg imidlertid da jeg fikk satt opp noen flere lys, det funker faktisk mye bedre når de kan danne et mesh Bruker HomeSeer, som ikke har noen direkte Zigbee-støtte. Jeg var akkurat i ferd med å kjøpe JowiHue-plugin, men så var det halv pris på upgrade til kommende HS4 (for Raspberry) som trolig har innebygd Zigbee-støtte, så da kjøpte jeg den i stedet, og mekket en egen mellomvare for at HS og deCONZ kan snakke sammen. Det er noen få linjer node.js som lytter på websocket-interfacet til deCONZ når det skjer endringer, og pusher de inn via REST-interfacet på HS, og motsatt for utgående kommandoer. Veldig greit å jobbe med deCONZ, lett forståelig interface, og bra dokumentasjon. Ulempen er at jeg må opprette devices manuelt i HS, og legge inn id på disse i mellomvaren min. Nå har jeg da satt opp noen temperatursensorer, fin dekning fra kjelleren til og med, og en Aqara dobbeltbryter for å styre markiser og utelys manuelt. Akkurat bryteren krevde at jeg var svært nære controlleren for å legge den til, men temperatursensorene var ikke så kresne.
  3. Hadde testet med heltall og annen desimalskiller tidligere, fikk feilmelding da også, men tok et komplisert eksempel med vilje. Men det var Status-control til Both som funka! Har faktisk prøvd dette tidligere også, men da hadde jeg sikkert noe annet galt samtidig... Det ble en skikkelig stygg drop-down i interfacet, men gikk heldigvis å velge text-input i stedet.
  4. Altså, jeg får inn temperaturdata i et script på utsiden av HomeSeer, og så ønsker jeg å dytte det inn i en virtual device, så jeg kan hente det ut til veggdisplayet, eller gjøre events basert på temperaturen. Det som hadde vært kjekt var å sette det med JSON-interfacet, f.eks. slik: http://10.0.42.101/JSON?request=controldevicebyvalue&ref=97&value=-1.5 Jeg får imidlertid feilmeldingen "Response": "Error, controlling device" Hva gjør jeg galt? Har følgende setting på Status Graphics:
  5. Godot

    HDMI matrix

    I TV-benken min så har jeg akkurat nå en 3-veis HDMI-switch og en HDMI-splitter til 2 utganger, som jeg bruker til å få signal på TV, prosjektør, og via switchens optiske utgang, også lyd til hodetelefoner eller Sonos lydplanke. Etter tordenvær for et par uker siden virker det som om splitteren døde, og i stedet for ny kunne jeg heller tenkt meg en matrise. Denne fra Kjell virker jo lovende, fordelen med å kjøpe fra de er at de er greie på å bytte hvis det ikke funker. Denne har jo ikke RS232, men det opplegget jeg hadde funket fint å styre fra Harmony. Kanskje det kan være løsning for Actibus også? Gi folk en instruks om hvor de skal trykke på én fjernkontroll som setter i gang alt som trengs. MEN den fra Kjell er ikke tilgjengelig før om 3 uker eller så. Noen som vet om noe lignende som er kjøpbart i Norge nå? (Merk at den optiske utgangen er det som ikke finnes i de fleste andre jeg har sett)
  6. Jeg var så dum at jeg valgte den moderne, krypterte, toveis-løsningen Somfy io for å radiostyre terrassemarkisen. Hadde vært mye enklere med old-school-varianten som jeg bare kunne styrt direkte via 433MHz... For å automatisere markisen måtte jeg i tilfelle kjøpe en ganske så dyr Somfy hub. Men siden jeg er sparsommelig klemte jeg heller fast en 40-kroners servo til Somfy-senderen Den styres fra den samme Pi Zeroen som står i sikringsskapet og sender strømforbruk til veggdisplayet. Somfy-senderen er også gjemt der, og så har jeg satt en gammel Nexa-bryter ved terrassedøra for de som ønsker å styre markisen manuelt. Da går signalet derfra til HomeSeer som sender en MQTT-melding videre til Pi Zeroen som aktiverer servoen. Kan også spørre Alexa om å senke markisen, men foreløpig får jeg bare til "Alexa, shade on" eller "off", funket ikke med "lower" eller "raise" av en eller annen grunn, selv om jeg hadde satt det opp på knappene i HomeSeer 😑
  7. Der fant jeg faktisk et script fra Moskus som gjorde akkurat det jeg trengte 😀 Ser ut som om det ikke er mulig å bruke UserNote, måtte skrive om litt så frontenden min brukte value i stedet for DeviceString, så funket det fint allikevel.
  8. Godot

    Lagre tekst i en device

    Jeg har en virtual device "Brannalarm" og en "Vannlekkasje", det hadde vært kjekt om jeg kunne oppdatere tekst på de devicene (f.eks. UserNote) så jeg kan se hvilke røykvarslere/lekkasjedetektorer som har trigget – og i hvilken rekkefølge. Hva er det beste måten å gjøre dette på? Fant ikke noe åpenbart i event actions, men ser det er mulig å kjøre kommandoer direkte, f.eks. &nhs.SetDeviceValueByRef(80, 0, True) Må jeg eventuelt videre med et vb-script her for å kunne hente ut nåverdien, og så legge til noe?
  9. Oppgitt strømforbruk 350-500mA. Og ja, det er en svakhet at den åpner seg når strømmen går, så bør ikke plassere det på de mest kritiske stedene. Men man har da UPS? 🙂
  10. Takk for butikktips! De var dyre da, ca det doble av det jeg hadde tenkt... Får kjøpe én for å teste 🙂 Kjekk den varianten for innbygging i skyvedører, det kan kanskje gjøre det estetisk bedre enn det jeg hadde forestilt meg. Hadde egentlig tenkt å montere magneten på innsiden av karmen til terrasseskyvedøra og så magnetplata med et vinkeljern i toppen.
  11. Jeg holder på å bygge sykkelbod, og tenkte å ha en "magisk" elektromagnetisk lås, så den er alltid åpen for meg og lukket for andre. Noen som har tips til steder jeg kan kjøpe? Har funnet noe utenlands, men ikke i Norge. Helt greit å kjøpe fra utlandet altså, men fint med konkrete produkt-tips. I tillegg til sykkelboden vurderer jeg samme løsning til balkongdør, for den er vi notorisk dårlig til å låse.
  12. Takk for heads up, det er en DD8L, og jeg har lurt på om dette kunne bli et problem, det er jo samme med prosjektører som må kjøles ned en stund før de skrus av. Den pumpa jeg hadde stående på denne tidligere fikk jeg ikke til å virke i vår, så foreløpig drenerer den til tanken sin. Den stopper altså på grunn av full tank, og så står det et varsel om dette på tableten i inngangspartiet. Da tømmer jeg tanken, og så starter den opp automatisk igjen når det blir over en viss fuktighet. Må typisk tømme et par ganger i uka, men jeg planlegger å borre et hull som er lavt nok til at det kan drenere direkte uten å måtte bruke pumpe. Da må jeg kanskje tenke på en smartere måte å skru av på... det jeg har vurdert er å se på strømforbruket som Fibaro-pluggen rapporterer. Noe slikt som at når rommet er tørt nok så venter den til strømforbruket har vært lavt en periode før den skrur av, da er ikke varmeelementet aktivt, men bare vifta.
  13. Har en avfukter i krypkjelleren som jeg startet opp igjen nå til våren, men litt smartere enn før. Avfukteren har fuktsensor selv, men jeg syntes at den lot ting gå litt for langt, at det ble tørrere enn nødvendig. Jeg satte på en Fibaro-plugg jeg hadde liggende, og satte opp noen regler om å skru seg av og på etter målt fuktnivå. Syntes imidlertid det var litt rart at den fortsatt gikk så ofte, selv om krypkjelleren var knusktørr. Så begynte jeg å tenke på hva det forrige jeg brukte akkurat den pluggen til... juletre! Hadde faktisk slettet event som skrudde treelysene av og på til rett tidspunkt, men så kom jeg på etter hvert at det var en binding til... Jeg hadde glemt at jeg hadde satt opp en Z-wave association fra den ledige bryteren i 2-pol-bryteren på kontoret, så vi manuelt kunne skru av og på juletreet derfra. Hver gang junior skrur av/på lyset på kontoret så masher han handa si over begge bryterne, og har dermed skrudd av og på avfukteren i krypkjelleren 🙂 Tok meg en måned å finne ut av dette...
  14. Det perfekte grensesnittet til smarthuset, HAL 9000 kommer snart 😀 http://www.masterreplicasgroup.com/blog1/hello-hal-hows-it-going
  15. NodeMCU er egentlig morsommere, da kan man havne ned på 50-lappen i utstyr kanskje. Har imidlertid aldri prøvd en NodeMCU, så dette var kjappere for meg å få i gang 🙂 It's a Unix system, I know this! Ser gjerne shoppingliste og kode for NodeMCU! Mitt koblingsskjema er herfra: http://www.uugear.com/portfolio/using-light-sensor-module-with-raspberry-pi/ Kjøpte en LM393 fra denne karen på FINN: https://www.finn.no/bap/forsale/ad.html?finnkode=72376538 Python-kode vedlagt under. Jeg programmerer vanligvis ikke i Python, men how hard can it be? import sys,time import RPi.GPIO as GPIO import paho.mqtt.client as mqtt import paho.mqtt.publish as publish # Variables pulses_per_kwh = 1000 # GPIO setup GPIO.setmode(GPIO.BCM) GPIO.setup(4, GPIO.IN, pull_up_down=GPIO.PUD_UP) # MQTT Broker = "10.0.42.101" Broker_port = 1883 sub_topic = "godlia/meter" pub_topic = "godlia/kw" # when connecting to mqtt do this; def on_connect(client, userdata, flags, rc): print("MQTT connected with result code "+str(rc)) client.subscribe(sub_topic) # when receiving a mqtt message do this; def on_message(client, userdata, msg): message = str(msg.payload) # Future functionality, maybe to control reporting frequency print(msg.topic+" "+message) def on_publish(mosq, obj, mid): print("mid: " + str(mid)) client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect(Broker, Broker_port, 60) client.loop_start() prevtime = time.time() prevkw = -20 while True: # wait for a rising edge (optional timeout is in milliseconds) channel = GPIO.wait_for_edge(4, GPIO.RISING) if channel is None: print('Timeout occurred') else: nowtime = time.time() diff = nowtime - prevtime prevtime = nowtime kw = 3600 / (diff * pulses_per_kwh) print("{} {}kW".format(round(diff,4), round(kw,2) )) if kw < (prevkw + 10): # If there is more than a 10kW jump, don't send the value # This smooths out most errors in measurement data = '{"kw": '+ str(kw) +'}' client.publish(pub_topic, str(data)) prevkw = kw
×
×
  • Opprett ny...