Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

SveinHa

Medlemmer
  • Innlegg

    1 503
  • Ble med

  • Besøkte siden sist

  • Dager vunnet

    70

Alt skrevet av SveinHa

  1. Loggingen så langt ser glimrende ut. Maxeffekt fra Tibber passerer 5kW få timer over midnatt men den betyr jo heldigvis ikkeno. Ellers ligger jeg jo laaangt under den magiske grensen... Har ikke gjort noe særlig for å spare strøm men har lagt mye arbeid å flytte forbruket til tidspunkt med billig strøm og det er ganske enkelt med vannbåren varme og betonggulv. Har regnet litt på det manuelt og bare med å flytte forbruket i forhold til å bruke en gjennomsnitts døgnpris så sparer jeg 10-11% men antar at jeg reelt sparer mer da normalt en større del av forbruket vil havne i de dyre periodene i 8-9 tiden og 16-17 tiden om jeg ikke aktivt prøver å unngå disse periodene. Berederen får grunnvarme fra varmepumpe mens toppvarmen ALLTID er av når strømprisen er over dagens gjennomsnitt. 2 stk kWh kolonner i tabellen her men det er nå litt bortkastet da den ene er fra Tibber og den andre er min egenproduserte måler og de er jo ganske like. Ikke at jeg skjønner helt hvorfor så har jo strømforbruket mitt i år blitt drastisk redusert (mørkeblå er i år, gul i fjor osv...): Konebytte for et godt år siden har tydeligvis påvirket mer enn jeg hadde trodd, ellers er det jo pool på 28m3 med 17kW varmepumpe som holder forbruket oppe om sommeren. September med 2/3 av normalt forbruk, 2208kWh, kosta 4.300.- i år... 😲 Edit: Litt mer studering så har jeg jo noe å ta tak i jeg og... men som sagt så har jeg ikke hatt noe fokus på å ta bort toppene enda. Begge de høyeste toppene er kl 21:00 og den tredje høyeste er kl 02:00. De 2 første er nok stekeovn/komfyr som får ta skylden for...
  2. Nåja, det nytter ikke å snakke om epler når det handler om appelsinjuice... De som lever av dette burde ikke snuble i begrepene, det hjelper i alle fall ikke menigmann at de snakker feil...
  3. Fixa hele problemet med å pynte litt på SQL SELECT. I MariaDB er en timestamp som heltall i formatet YYYYMMDDHHMMSS så "SELECT MID(Timestamp,9,4) AS 'Tid i dag',..." gjorde jobben: Presentasjonen i Node-Red Dashbord ble slik:
  4. Vi snakker nok heller om noe i området rundt en måling pr sekund summert opp til en kWh-total pr time og starter på 0 igjen neste time. Blir vel noe sånt som min egenproduserte måler: Hver gang en ny kW-momentanverdi kommer inn i systemet ganger jeg opp med antall millisekund siden forrige verdi dukket opp og flytter komma et passe antall plasser, lagrer i SQL database, nullstiller og starter igjen: Må jo begynne å logge litt for å se hvor utfordringene blir...
  5. Er nok bare TU journalisten som har snubla i begrepene, om en leser kWh der det står kW så rimer det langt bedre...
  6. Det var det jeg trodde men artikkelen i TU sa meg noe helt annet...
  7. Ser for meg at der kan bli noen automasjonsutfordringer her. Er det nok med et millisekund over 5kW før en hopper opp på 10kW? F.eks. om min 2.9kW bereder står på så kan jeg jo lett slå den av i det jeg slår på komfyren men der vil jo være en topp et øyeblikk før zwave bryteren på berederen får tid til å reagere... Regner med det er den maxen Tibber viser meg som blir gjeldende og da havner jeg lett over 5kW HVER dag med et dagsforbruk på typisk i området rundt 30-40 kWh/døgn
  8. Driver og lagrer noe data i en MariaDB SQL database og lagringen går fint. Et par screenshots fra phpMyAdmin og Sequeler: Klokkeslettene er riktige i forhold til vår tidssone men når NodeRed henter de samme data blir datofeltet vist i CET: Har lett etter settinger for timezone uten å finne noe... I MariaDB påvirker ikke tidssonen noe i alle fall... Maskinen som kjører NodeRed har i alle fall riktig tidssone. Resultatet i NodeRed er teknisk sett riktig for tidsmarkeringene (Z) viser at det er CET. Noen gode ideer? Ikke noe stort problem men ser litt teit ut...
  9. I gamle dager var det nok, da ventet Win på at du selv tok initiativet for å oppdatere men ikke nå lengre...
  10. Hvis det hadde virket... Min HS4 server restartet i går selv om jeg har gjort alt jeg kan for å unngå det... Tror neste steg er å unngå Windows...
  11. Samme har jeg gjort. Stuen har manuelle brytere (HSTouch på flere nettbrett rundtom) og det meste av resten styres av div sensorer. Et par brytere styrer taklys på soverom og kjører scripts for å slukke hele huset og låse entredør eller slå på litt basislys, låse opp entredør og slå på espressomaskinen. Helt enig
  12. Har pynta litt på koden i første innlegg, lagt til Watchdog som automatisk restarter Arduino om der ikke mottas data fra MQTT innen 5 minutt (krever forbindelse mellom pin 0 og pin RESET).
  13. En kan lage mye fint i HST men der mangler jo mange ting som de instrumentene i første innlegg her. Har brukt HST i mange år og har vel 15-20 skjermbilder som ser greie ut og gjør jobben sin helt fint men utvalget av grafiske elementer er ikke særlig godt og fontstørrelser i utvikleren avviker sterkt fra klientene og også forskjellig alt etter skjermoppløsningen på klientene. Rapporterte en litt alvorlig bug i HST for et halvt år siden, måtte vel rapportere den 3-4 ganger før jeg fikk noe respons og siden har ingenting skjedd... Fordelen med HST er jo at den er rimelig godt integrert med HS... Ankepunktet er i hovedsak HSTouch Designer, den mangler mye på å være et fullverdig verktøy (og jeg har nå litt å sammenligne med, har hatt HMI som en del av jobben min siden 1985 og har bl.a. designet HMI til brann og gassovervåkingen på en av platformene i Nordsjøen...).
  14. I utgangspunktet vil jeg fortsette å bruke HSTouch men blir litt irritert på dårlig designer (WYSINWYG, What Yot See Is NOT What You Get). Kjører nå med både HSTouch og Node-Red Dashboard og det er ikke noe ideell løsning men begge har egenskaper som jeg trenger og som den andre ikke har... Den der Jon00 saken må jeg sjekke opp nærmere. Akkurat nå er det energisparing som har fokus så får det visuelle komme om litt...
  15. Hvis en ikke har mulighet til gulvsensor så vil nok det være en grei tilnærming. I mine betonggulv med vannbåren varme tror jeg nok ikke en kommer unna uten gulvsensor (som jeg har) siden temperaturen på tilført vann vil variere en god del og flowen også ut fra hvilke og hvor mange gulvventiler som er åpne samtidig.
  16. På leting etter en liten bug: Hele greiene funker supert i opptil mange timer men så slutter den å motta data via subscribe/callback... Har laget en publish av mottatt verdi så jeg ser AT det skjer men ikke funnet ut hvorfor enda.
  17. En egen palette som bare inneholder show-value. Veldig hendig for å se hva som skjer, gjør ingenting annet. "Extract value" er cluet her. Meldingen fra MQTT inneholder flere parameter og jeg henter ut et og et av de jeg trenger, først temperatur og setter til fast 1 desimal: Så en gang til men henter ut "Humidity" denne gang:
  18. Er det noe slik du er på jakt etter: [{"id":"0e6151314d8e364b","type":"mqtt in","z":"93e65ebbbd15fba7","name":"","topic":"zigbee2mqtt/Nedis/TempFuktGarasjeloft","qos":"0","datatype":"json","broker":"6db118ed1b0c56de","nl":false,"rap":true,"rh":0,"x":170,"y":820,"wires":[["4a4241d770c80287"]]},{"id":"c4f4cc33f06aa00b","type":"show-value","z":"93e65ebbbd15fba7","name":"","path":"","x":330,"y":980,"wires":[["ca023a7789427639","275a3056d5843748"]]},{"id":"d76eb42e40a4c574","type":"show-value","z":"93e65ebbbd15fba7","name":"","path":"","x":330,"y":920,"wires":[["b2a1b8b3ef128344","0f6e868087594e4c"]]},{"id":"9aaa57d3011581b5","type":"function","z":"93e65ebbbd15fba7","name":"Extract Value","func":"var svar = \"\";\nvar value=msg.payload.temperature;\nsvar = {payload:value.toFixed(1)};\nreturn svar;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":170,"y":920,"wires":[["d76eb42e40a4c574"]]},{"id":"5b24f8649890e9df","type":"function","z":"93e65ebbbd15fba7","name":"Extract Value","func":"var svar = \"\";\nvar value=msg.payload.humidity;\nsvar = {payload:value.toFixed(1)};\nreturn svar;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":170,"y":980,"wires":[["c4f4cc33f06aa00b"]]},{"id":"4a4241d770c80287","type":"show-value","z":"93e65ebbbd15fba7","name":"","path":"","x":430,"y":820,"wires":[["9aaa57d3011581b5","5b24f8649890e9df"]]},{"id":"6db118ed1b0c56de","type":"mqtt-broker","name":"DaleMQTT","broker":"172.16.0.94","port":"1883","clientid":"","usetls":false,"protocolVersion":"5","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"sessionExpiry":""}]
  19. Dreven er vel å dra den litt langt men om du skal ha betingelser som A eller B eller C osv kan du gjøre slik: Øverste utgangen er sann ellers går du videre og sjekker neste... Om en eller annen i rekken er sann trenger du ikke bry deg om resten uansett... Betingelsene mine bruker flow.variabler som settes andre steder i flowen.
  20. Med MQTT i huset åpner mulighetene seg for alskens små IoT saker. Jeg har flere steder behov for 3 temperaturer og kanskje litt annet knask så jeg snekret sammen en Arduino med tempsensorer som sendes til min Mosquitto MQTT Broker og hentes derfra igjen av Node-Red og/eller HomeSeer4. Selve oppkoblingen er helt basis så ikke så mye å si om den men legger nå ved et bilde. Hadde egentlig tenkt en analog/PWM 0-10V utgang styrt av en 0-100 verdi fra MQTT men det ble en 4-trinns spenningsdeler i stedet, fikk ikke til 10v i farten. 4 trinn på varmepumpen er i alle fall langt bedre enn bare av/på. "UT-INV-U" er styreboksen til varmepumpen. #include <PubSubClient.h> //#include <WiFi.h> //ESP32 #include <WiFiNINA.h> //Arduino #include "arduino_secrets.h" #include <DS18B20.h> #define LED_BUILTIN 2 DS18B20 ds(2); //pin number of 1 Wire bus float temps[10] = {0.0, 0.0, 0.0}; //Array for storing temperatures int sensnum = 0; // counter int pinR25 = 3; int pinR50 = 4; int pinR75 = 5; int pinR100 = 7; int pinReset = 0; ///////please enter your sensitive data in the Secret tab/arduino_secrets.h char ssid[] = SECRET_SSID; // your network SSID (name) char pass[] = SECRET_PASS; // your network password (use for WPA, or use as key for WEP) char mqttid[] = SECRET_MQUI; char mqttpw[] = SECRET_MQPW; const char broker[] = "172.16.0.94"; int port = 1883; const char* mySysID = "TR1ID"; //MÅ være unik innen samme mqttBroker for at LWT skal virke const char* willTopic = "Teknisk/TR1/LWT"; const char* willMessage = "Offline"; byte willQoS = 0; boolean willRetain = true; //Liste over MQTT topics for publishing char *topics[] = {"Teknisk/TR1/TempBerederTopp", "Teknisk/TR1/TempBerederBunn", "Teknisk/TR1/TempTilfGulvvarme", " ", " ", " ", " ", " ", " ", "Teknisk/TR1/VPSP-TM", }; // Liste over topics for subscriptions char *topicr[] = {"Teknisk/TR1/VPSP", " ", " ", " ", " ", " ", " ", }; //set interval for sending messages (milliseconds) const long interval = 30000; const long rtimeout = 300000; unsigned long previousMillis = 0; unsigned long resetMillis = millis(); unsigned long lastrecvMillis = millis(); unsigned long currentMillis = millis(); char in_message[100]; int recvVPSP = 0; char pubs[20] = "0123.456"; // Hjelpevariabler for konvertering av format for mqtt, sett av rikelig plass til temperaturer String s1; WiFiClient wifiClient; PubSubClient mqttClient(wifiClient); void callback(char* topic, byte* message, unsigned int length) { digitalWrite(LED_BUILTIN, HIGH); String messageTemp; Serial.print("Message arrived on topic: "); Serial.print(topic); Serial.print(". Message: "); lastrecvMillis = millis(); //data mottatt, reset timer for automatisk restart for (int i = 0; i < length; i++) { //Serial.print((char)message[i]); messageTemp += (char)message[i]; } Serial.println(messageTemp); // Handle the received messages if (String(topic) == topicr[0]) { recvVPSP = messageTemp.toInt(); if (recvVPSP <8) { digitalWrite(pinR100, LOW); digitalWrite(pinR75, LOW); digitalWrite(pinR50, LOW); digitalWrite(pinR25, LOW); } if (recvVPSP >= 8 and recvVPSP <35) { digitalWrite(pinR100, LOW); digitalWrite(pinR75, LOW); digitalWrite(pinR50, LOW); digitalWrite(pinR25, HIGH); } if (recvVPSP >= 35 and recvVPSP <65) { digitalWrite(pinR100, LOW); digitalWrite(pinR75, LOW); digitalWrite(pinR50, HIGH); digitalWrite(pinR25, LOW); } if (recvVPSP >= 65 and recvVPSP <85) { digitalWrite(pinR100, LOW); digitalWrite(pinR75, HIGH); digitalWrite(pinR50, LOW); digitalWrite(pinR25, LOW); } if (recvVPSP >= 85) { digitalWrite(pinR100, HIGH); digitalWrite(pinR75, LOW); digitalWrite(pinR50, LOW); digitalWrite(pinR25, LOW); } PublishVPSP(); } delay(100); digitalWrite(LED_BUILTIN, LOW); } int count = 0; int ChkWiFi(){ if (WiFi.status() != WL_CONNECTED) { Serial.print("Attempting to connect to WPA SSID: "); Serial.println(ssid); while (WiFi.begin(ssid, pass) != WL_CONNECTED) { // failed, retry Serial.print("."); delay(5000);} Serial.println(); Serial.print("Connected to network: "); Serial.println(ssid); } } void ChkMQTT(){ while (!mqttClient.connect(mySysID, mqttid, mqttpw, willTopic, willQoS, willRetain, willMessage)) { Serial.print("MQTT connection failed! Error code = "); Serial.println(mqttClient.state()); delay(5000); } } void PublishVPSP(){ // Send TM til Broker (sjekk at der er liv i subscription) s1 = String(recvVPSP); s1.toCharArray(pubs,10); mqttClient.publish(topics[9], pubs); // Oppdater LWT mqttClient.publish(willTopic, "Online"); Serial.println("VPSP sent"); } void PublishAll(){ // Publiser temperaturer for(int i = 0; i < 3; i++){ s1 = String(temps[i]); s1.toCharArray(pubs,10); mqttClient.publish(topics[i], pubs); } // Send TM til Broker (sjekk at der er liv i subscription) s1 = String(recvVPSP); s1.toCharArray(pubs,10); mqttClient.publish(topics[9], pubs); // Oppdater LWT mqttClient.publish(willTopic, "Online"); Serial.println("Data sent"); } void LesDS18B20(){ // les temperaturer inn i array sensnum = 0; while (ds.selectNext()) { temps[sensnum] = ds.getTempC(); sensnum ++; } } void Watchdog(){ // Reset unit if ((currentMillis + 1000 - lastrecvMillis) >= rtimeout) { Serial.print("Unit RESET from program, last recv > "); Serial.print( rtimeout/1000); Serial.println(" seconds ago"); delay(1000); digitalWrite(pinReset, LOW); } } void setup() { Serial.begin(115200); pinMode(pinR25, OUTPUT); pinMode(pinR50, OUTPUT); pinMode(pinR75, OUTPUT); pinMode(pinR100, OUTPUT); pinMode(pinReset, OUTPUT); digitalWrite(pinReset, HIGH); pinMode(LED_BUILTIN, OUTPUT); mqttClient.setServer(broker, port); mqttClient.setCallback(callback); ChkWiFi(); ChkMQTT(); s1 = String(topicr[0]); s1.toCharArray(pubs,40); Serial.println(pubs); boolean r= mqttClient.subscribe(topicr[0]); // boolean r= mqttClient.subscribe(pubs); Serial.print("subscribe "); Serial.print(topicr[0]); Serial.println(r); lastrecvMillis = millis(); //init timer for automatisk reset } void loop() { currentMillis = millis(); ChkWiFi(); ChkMQTT(); mqttClient.loop(); //VIKTIG: Uten denne vil en ikke kunne motta subscriptions // Kjør program på spesifisert intervall if (currentMillis - previousMillis >= interval) { digitalWrite(LED_BUILTIN, HIGH); previousMillis = currentMillis; mqttClient.subscribe(topicr[0]); LesDS18B20(); PublishAll(); delay(100); digitalWrite(LED_BUILTIN, LOW); } Watchdog(); }
  21. Sant, tok en del tid før jeg skjønte gangen i den men nå er den jo suuuuper 👍
  22. Ja, greit alternativ det. Har noe forskjellig knask på vei derfra allerede... Har slitt VELDIG med i det hele tatt å få varer fra utlandet siste gode året, sist nå en pakke fra Amazon der jeg bare plutselig fikk pengene tilbake fordi jeg hadde benyttet meg av åpent kjøp!?!?! Jeg har ikke sett pakken...
  23. Neida, det hadde jeg heller ikke forventet men om du likevel skal ha noe nytt så kan en jo tenke i de baner. Lenge siden jeg hadde Fibaro Home Center så vet ikke hvordan Zigbee integreres der men det er i alle fall greit å ha muligheten i bakhodet. Z-Wave modulen i HC2 var nå ikke særlig imponerende...
  24. De fleste dimmere har mulighet for å sette "transition" time men de z-wave dimmerene jeg har (Qubino og Fibaro) dimmer da i synlige steg, Ikea og Philips HUE zigbee enheter har en myyyyyye bedre dimming over tid og transition time kan settes direkte i hver enkelt kommando. Jeg har en HUE LEDstripe og bevegelssensor under sengen og ved bevegelse dimmer den opp til 60 (av 250) i løpet av 5 sekund: {"brightness":60,"transition":5}, etter et minutt dimmer den ned til 0 i løpet av 2 minutt: {"brightness":0,"transition":120}. Funker heeeelt supert.
×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.