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

Guahtdims løsning


Anbefalte innlegg

* Homeseer på Windows (Windows server 2016 - som gjør at audiodelen ikke fungerer)

* RFX (for å hente inn noe Nexa-greier som er lagt opp i kjøkkenet )

* UZB1

* Endel temperaturfølere av typen Viking for å overvåke temp i rom + kjøleskap og fryser.

* 3 stykk vanningsfølere (Extra sensors for XH300 Moisture Sensor) (synd 3 er maks)

* Z-uno til å overvåke om røykvarslerne slår ut (og mulighet til å trigge røykvarslerne - 10 stykk Deltronic PR-1211 og en CM-02 9V Kontrollenhet)

* Fibaro bryter på dagens kontor

* 8 Popp 10101 termostater på radiatorer

* NodeMcu for overvåkning og viftestyring i mediemøbel og teknisk skap

* 1 stykk Fibaro Wall plug for å overvåke tørketrommel (ikke hatt noe problem med de ref Fibaro wall plug og vaskemaskiner)

* 1 stykk Qubino ZMNHYD1 for overvåke vaskemaskin(tåler 3500 watt)

* Webcam som "leser av" vanntrykksmåler på varmtvannstanken

* 2 RPi med RfLink

* 4 stykk dørsensorer (Aeotec ZW112)

* 2 stykk Auto Ventil - GR-105N (kaldt og varmt vann ute)

* 1 Adax Clea Wifi varmeovn som er integrert i HomeSeer med egen plugin

 

Diverse andre sensorer som idag ikke brukes til noe fornuftig, men mer som leketøy de gangene jeg har tid til å leke med dette.

 

Fortsatt så er jeg i prøvestadiet og det som egentlig kjører nå er noen simple notifications for å advare for lav temperatur i spisskamerset, røykvarslere utløst, planter som mangler vann. På sikt så blir det å sette opp noe for varmestyring i huset. Etter å ha fått montert en POPP termostat så har jeg fått godvilje fra min bedre halvdel. 

 

Jeg har begynt å kikke på Lua og ser at det kan være litt morsomt å drive med. Som utvikler blir man jo stadig anbefalt å lære seg nye språk, men motivasjonen er ikke stor før man får noe fornuftig å bruke det til. (droppet da jeg gikk over til Homeseer)

 

Til daglig jobber jeg som senior konsulent i Boitano AS

 

Lager noen plugins til Homeseer.

  • RfLinkSeer - Prøver å få inn RfLink i Homeseer
  • TwilioSeer - Plugin for å få oversendt SMS ved hendelser vha Twilio
  • Og endel til (se i min signatur)
Endret av Guahtdim
Oppdatert litt (okt 2020)
  • Like 2
Lenke til kommentar
Del på andre sider

det er trådløse varslere av merket Deltronic PR-1211 og en CM-02 9V Kontrollenhet.

CM-02 enheten gir meg mulig til å styre ved hjelp av å føle på en port (åpen/lukket) og trigge med rele.

Inntil videre så er Z-Uno koblingen veldig "eksperimentell" siden jeg har det koblet på breadboard. Det blir vel litt lodding etterhvert slik at det tåler litt mer.

Lenke til kommentar
Del på andre sider

  • 4 måneder senere...

Endelig fått laget viftestyring i mediaskapet. Har hatt temperaturer på 46 grader når barna har sett på film. Har nå fått inn en NodeMcu som overvåker temperatur og starter opp 2 120mm vifter (på 9V) når temperaturen går over 34 grader. Har i tillegg gjort det slik at viftene ikke blir slått av før temperaturen er blitt 32 grader forå unngå situasjoner der hvor viften blir stående å virre mellom av og på. Må nok justere inn dette etterhvert. 

Har lagt til MQTT publishing slik at vifte av/på og temperatur kan legges inn i HomeSeer. Ulempen med Homeseer plugin er at den stjeler mye ressurser på mitt system (men maskinen de kjører på idag er  7 år gammel så jeg er ikke overrasket)

Endret av Guahtdim
Lenke til kommentar
Del på andre sider

2 timer siden, Guahtdim skrev:

Endelig fått laget viftestyring i mediaskapet. Har hatt temperaturer på 46 grader når barna har sett på film. Har nå fått inn en NodeMcu som overvåker temperatur og starter opp 2 120mm vifter (på 5V) når temperaturen går over 34 grader. Har i tillegg gjort det slik at viftene ikke blir slått av før temperaturen er blitt 33 grader forå unngå situasjoner der hvor viften blir stående å virre mellom av og på. Må nok justere inn dette etterhvert. 

Har lagt til MQTT publishing slik at vifte av/på og temperatur kan legges inn i HomeSeer. Ulempen med Homeseer plugin er at den stjeler mye ressurser på mitt system (men maskinen de kjører på idag er  7 år gammel så jeg er ikke overrasket)

 

Jeg har gjort noe lignende, men foreløpig via JSON-API. Har planer om å endre til MQTT snart, kunne du delt koden din? :) 

Lenke til kommentar
Del på andre sider

OK, her kan du få koden. Ikke så veldig pen og strømlinjeformet, men den fungerer.  Jeg har ikke fått ryddet bort noe forsøk på å subscribe.

 

Den mangler bl.a. en sjekk på om man er koblet mot MQTT ved publish. Slik det er idag så kjører den publish selv om den ikke har noe sted å kjøre publish mot. Men det ser ut som om det fungerer selv om jeg forventet at det skulle feile.

 

#include <ESP8266WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <PubSubClient.h>


#define ONE_WIRE_BUS            D1

float upperTempLimitFanOn=33;
float upperTempLimitFanOff=34;

int checkDelay=5000;
int sleepDelay=60000;
 
const char* ssid = "WifiNettverkNavn";
const char* password = "NettverkPassord";

const char* mqtt_server = "100.100.100.100";
const char* mqtt_username = "mqtt-user";
const char* mqtt_password = "mqtt-password";
const char* mqtt_topic_temperature = "/sensors/mediamobel/temperature";
const char* mqtt_topic_fan = "/sensors/mediamobel/fan";

WiFiClient espClient;
PubSubClient client(espClient);
 
int ledPin = 13; // GPIO13=D7
WiFiServer server(80);
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);

char temperatureString[6];
 
void setup() {
  Serial.begin(115200);
  delay(10);
 
  pinMode(ledPin, OUTPUT);
  //digitalWrite(ledPin, LOW);
  digitalWrite(ledPin, HIGH);
 
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  setup_wifi();
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);
  //WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
 
  // Start the server
  server.begin();
  Serial.println("Server started");
 
  // Print the IP address
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");

  DS18B20.begin();
 
}

void setup_wifi() {
  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();
}

void reconnect() {
  int reconnectTries=0;
   WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  // Loop until we're reconnected
  while (!client.connected() && reconnectTries<5) {
    reconnectTries++;
    Serial.print("Attempting MQTT connection...");
    Serial.println(reconnectTries);
    // Attempt to connect
    if (client.connect("ESP8266Client", mqtt_username, mqtt_password)) {

      //client.publish("outTopic", "hello world");
      // ... and resubscribe
      //bool result=client.subscribe("inTopic");
      client.setCallback(callback);
      
      //bool result=client.subscribe(mqtt_topic_fan);
      //if(result){
      //  Serial.print("subscribing to ");
      //  Serial.println(mqtt_topic_fan);
      //}
      Serial.println("connected");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(500);
    }
  }
}
 
void loop() {
  if (!client.connected()) {
    reconnect();
  }

  
  
  float temperature = getTemperature();
  dtostrf(temperature, 2, 2, temperatureString);
  client.publish(mqtt_topic_temperature, temperatureString);
  while(temperatureTooHigh(temperature)){
    Serial.println("Temp too high, fanning");
    client.publish(mqtt_topic_fan, "1");
    digitalWrite(ledPin, LOW);
    delay(checkDelay);
    temperature=getTemperature();
     dtostrf(temperature, 2, 2, temperatureString);
    Serial.println(temperatureString);
    client.publish(mqtt_topic_temperature, temperatureString);
  }
  if(fanIsRunning()){
    client.publish(mqtt_topic_fan, "0");
    digitalWrite(ledPin, HIGH);
  }
  
  Serial.print("temp is ");
  Serial.println(temperatureString);

  

   Serial.println( "Closing MQTT connection..." );
  client.disconnect();

  Serial.println("Closing WiFi connection..." );
  WiFi.disconnect();

  delay(sleepDelay); 
  
 
}


bool fanIsRunning(){
  int val=digitalRead(ledPin);
  if(val==1) return false;
  return true;  
}


bool temperatureTooHigh(float temperature){
  if(fanIsRunning()){
    if(temperature>upperTempLimitFanOn){
        return true;
    }    
  }
  else{
    if(temperature>upperTempLimitFanOff) {
      return true;  
    }
  }
  
  return false;
}


float getTemperature() {
  Serial.println( "Requesting DS18B20 temperature...");
  float temp;
  do {
    DS18B20.requestTemperatures(); 
    temp = DS18B20.getTempCByIndex(0);
    delay(100);
  } while (temp == 85.0 || temp == (-127.0));
  return temp;
}
 

 

Lenke til kommentar
Del på andre sider

  • 3 måneder senere...

Litt om utvikling:

 

Jeg kjører Hyper-v med to Win10 installasjoner. En for HomeSeer3 og en for HomeSeer4. Mulig HomeSeer3 kommer til å bli avsluttet når jeg engang migrerer til HS4. Jeg har kjøpt egen utviklerlisens. Det spiste opp det meste av donasjonene jeg har fått. Men greit å ha det slik.

 

Verktøyene mine er normalt Visual Studio 2017 (eventuelt 2019), Postman (til å teste web api før det lages i plugin), Notepad++ til alt av annen redigering av filer. Noen ganger også Visual Code siden Notepad++ ikke dekker alt mer. 

 

Endret av Guahtdim
  • Like 1
Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • 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.