Vinnerliste
Populært innhold
Viser innholdet med mest poeng fra 31. okt. 2021 i alle områder
-
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(); }2 poeng
-
Ser den. Jeg tenker at man kan kanskje allikvel dra nytte av å vite de termiske egenskapene i gulvene. For meg handler dette også om forbruksplanlegging. Både sett iforhold til energipris og effekttopper, for å gi en best mulig fordelaktig strøm-/energiregning. Dersom man vet at man feks bruker 0,5 timer på å varme opp gulvet 1 grad. Og at det tar feks tar 7 timer for at temperaturen synker med 1 grad. Da kan man programmere opp automatiseringen til gjøre å gjøre vurderinger og ta å ta besluttninger. Alt for å gi deg best mulig kostnadsscenario uten å måtte tenke for mye i det daglige.1 poeng
-
Hei. Jeg er ny her på forumet. Jeg har tenkt lenge på å starte automatisering av huset her hjemme. Jeg begynte med X-comfort for noen år siden men drog i nødbremsen da det viste seg at Z-wave ville trolig bli en åpen standard som hadde fremtiden med seg. X-comfort er som kjent propriært, lukket og dyrt. Her taper Eaton/X-comfort terreng selv om X-comfort er en meget habilt produkt protefølje. Jeg har nå endelig gått igang med Home Assistant. Det stod mellom Home assistant og HomeSeer. For meg ble det følelsen av at støtten for produkter var bredere og brukerbasen større for Home Assistant. Det var bakgrunnen for valget mitt. Kjøpte min første "puck" for å styre varmekabler. Har i dag bare en puck fordi jeg var veldig usikker på produktet. Foreløbig ser det ut til å fungere bra. Kan være fordi jeg omtrent ikke har enheter på Z-wave nettverket. Jeg landet på en Qubino Flush On/Off Thermostat 2 og det ser ut til at jeg kommer til å kjøpe 5 stk av denne for å få alle varmekablene i 1egt med før jul. Jeg går da fra gammel tradisjonell Hager varmestyring med termostat og relestyring montert i hovedtavle til en mer moderne løsning. Jeg har koblingsboks nede ved gulvet slik at en ordinær veggmontert termostat er en dårlig løsning for meg. Det gledes at jeg har funnet noe som ser ut til å kunne fungere. Videre vil jeg takke Stigvi og gjengen her for å tilført inspirasjon til å programmere opp PID-regulatoren samt sette hode i planleggings modus med tanke på automatiseringen jeg skal til med fremover. Det jeg synes har vært vanskeligst med Home Assistant er å finne ut av hvordan man kombinerer de ulike språkene(syntax) og hvor koden skal plasseres. Dette er nå kartlagt og forstått godt nok at jeg kan komme meg videre. Da blir det en hel del enklere å lykkes i arbeidet fremover. Ha en flott søndag, godt folk.1 poeng
-
Hei på dere, Fra Mill her, ser at det er en del som er interessert i å styre ovnene sine via egne løsninger og det synes vi er flott Ble nettopp ferdig med å skrive dokumentasjonen for generasjon 3 "local res api " som dere nå kan finne på : https://github.com/millheat/Generation_3_REST_API Følgende produkter støtter local REST API : 1: Panel ovner - generasjon 3 2: Konveksjons ovner - generasjon 3 3: Olje ovner - generasjon 3 4: Wi-Fi socket - generasjon 3 (T/H) Vi jobber med følgende integrasjoner som kommer første halvdel av 2022 for generasjon 3 1: Matter (Alexa, Google, Apple Homekit) 2: IFTTT 3: Samsung SmartThings 4: Homey ++ Om dere har noen spesifikk ønsker så er det bare å fyre løs så vil vi evaluere disse fortløpende Vi har ikke glemt generasjon 2, det vil komme noen oppdateringer mot slutten av året 2021 Kind regards Bashir Naimy IoT Manager1 poeng
Vinnerlisten er satt til Oslo/GMT+01:00