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

xibriz

VIP
  • Innlegg

    1 289
  • Ble med

  • Besøkte siden sist

  • Dager vunnet

    50

Alt skrevet av xibriz

  1. Nå har jeg prøvd sonsoren her Og her Og til slutt her Uten å få noen avstand prøvde også en ny sensor i tilfelle den var defekt, og kontrollerte mot vegg og det fungerte bra. Konkluderer med at hc-sr04 er en blindvei.
  2. xibriz

    Forslag til løsning?

    Jeg anbefaler RazBerry 2 kort på en RaspBerry 3 med Z-way. Da kan man enkelt gå over til openhab hvis man vil ha noe mer komplisert (Jeg mener avansert)
  3. I natt har det snødd. Jeg målte 12cm ca 1 meter ut og mellom 0-5cm der sensoren står. Det var ingen merkbare utslag på sensoren.
  4. Jeg mistenker at sensoren treffer det det ikke er snø. Må nok finne en annen plassering.
  5. Koden, som jeg stort sett stjal på internett, tar høyde for både temperatur å luftfultighet. Det er derfor jeg har en DHT22 der Alle funksjoner under loop er kun for å håntere MQTT og FOTA-oppgradering. #include "DHT.h" #include <ESP8266WiFi.h> #include <PubSubClient.h> #include <ESP8266HTTPClient.h> #include <ESP8266httpUpdate.h> #define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 // 3.3v = Ethernet 1 // 5v = Ethernet 2 // GND = Ethernet 7 and 8 #define trigPin 5 //Ethernet 5 #define echoPin 4 //Ethernet 4 #define dhtPin 2 // Ethernet 3 const int FW_VERSION = 1001; WiFiClient espClient; PubSubClient client(espClient); // WiFi and MQTT endpoints const char* ssid = "ssid"; const char* password = "pass"; const char* mqtt_server = "mqtt"; const char* mqtt_topic_fw_version = "esp/sensor3/fw/version"; const char* mqtt_topic_fw_update = "esp/sensor3/fw/update"; const char* mqtt_topic_fw_info = "esp/sensor3/fw/info"; const char* mqtt_topic_temp = "esp/sensor3/temperature"; const char* mqtt_topic_humid = "esp/sensor3/humidity"; const char* mqtt_topic_dist = "esp/sensor3/distance"; DHT dht(dhtPin, DHTTYPE); float lastTime = 0; void setup() { setupWiFi(); setupMqtt(); Serial.begin (9600); delay(10); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); dht.begin(); } void loop() { loopMqtt(); float duration, distance; float speed; float humidity = dht.readHumidity(); // Read temperature as Celsius (the default) float temperature = dht.readTemperature(); digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); speed = 331.4 + (0.606 * temperature) + (0.0124 * humidity); distance = (duration / 2) * (speed / 10000) - 1.5; //Calibrated -1.5 cm if (distance >= 400 || distance <= 2){ Serial.print("Distance = "); Serial.println("Out of range"); } else { Serial.print("Distance = "); Serial.print(distance); Serial.println(" cm"); delay(1000); } Serial.print("Temperature = "); Serial.print(temperature); Serial.print(" *C "); Serial.print(" Humidity = "); Serial.print(humidity); Serial.println(" % "); if(millis() - lastTime >= 5000) { lastTime = millis(); client.publish(mqtt_topic_temp, ((String)temperature).c_str()); client.publish(mqtt_topic_humid, ((String)humidity).c_str()); client.publish(mqtt_topic_dist, ((String)distance).c_str()); } delay(1000); } void setupMqtt() { client.setServer(mqtt_server, 1883); client.setCallback(callback); } void setupWiFi() { delay(10); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } } void callback(char* topic, byte* payload, unsigned int length) { if (strcmp(topic, mqtt_topic_fw_update) == 0) { String fwURL = ""; for (int i = 0; i < length; i++) { fwURL.concat( (char)payload[i] ); } checkForUpdates(fwURL); } } // Ensure the MQTT lirary gets some attention too void loopMqtt() { if (!client.connected()) { reconnectMqtt(); } client.loop(); delay(100); } void reconnectMqtt() { // Loop until we're reconnected while (!client.connected()) { // Create a random client ID String clientId = "ESP8266Client-"; clientId += String(random(0xffff), HEX); // Attempt to connect if (client.connect(clientId.c_str())) { client.subscribe(mqtt_topic_fw_update); client.publish(mqtt_topic_fw_version, ((String)FW_VERSION).c_str()); } else { // Wait 5 seconds before retrying delay(5000); } } } void checkForUpdates(String fwURL) { String fwVersionURL = fwURL; fwVersionURL.concat( ".version" ); client.publish(mqtt_topic_fw_info, ((String)"Checking for firmware updates.").c_str()); client.publish(mqtt_topic_fw_info, fwVersionURL.c_str()); HTTPClient httpClient; httpClient.begin( fwVersionURL ); int httpCode = httpClient.GET(); if( httpCode == 200 ) { String newFWVersion = httpClient.getString(); client.publish(mqtt_topic_fw_info, ((String)"Current firmware version").c_str()); client.publish(mqtt_topic_fw_info, ((String)FW_VERSION).c_str()); client.publish(mqtt_topic_fw_info, ((String)"Available firmware version").c_str()); client.publish(mqtt_topic_fw_info, newFWVersion.c_str()); int newVersion = newFWVersion.toInt(); if( newVersion > FW_VERSION ) { client.publish(mqtt_topic_fw_info, ((String)"Preparing to update").c_str()); String fwImageURL = fwURL; fwImageURL.concat( ".bin" ); client.publish(mqtt_topic_fw_info, ((String)"Downloading new firmware.").c_str()); client.publish(mqtt_topic_fw_info, fwImageURL.c_str()); t_httpUpdate_return ret = ESPhttpUpdate.update( fwImageURL ); switch(ret) { case HTTP_UPDATE_FAILED: //Serial.printf("HTTP_UPDATE_FAILD Error (%d): %s", ESPhttpUpdate.getLastError(), ESPhttpUpdate.getLastErrorString().c_str()); client.publish(mqtt_topic_fw_info, ((String)HTTP_UPDATE_FAILED).c_str()); client.publish(mqtt_topic_fw_info, ((String)ESPhttpUpdate.getLastError()).c_str()); client.publish(mqtt_topic_fw_info, ESPhttpUpdate.getLastErrorString().c_str()); break; case HTTP_UPDATE_NO_UPDATES: client.publish(mqtt_topic_fw_info, ((String)HTTP_UPDATE_NO_UPDATES).c_str()); break; } } else { client.publish(mqtt_topic_fw_info, ((String)"Already on latest version").c_str()); } } else { client.publish(mqtt_topic_fw_info, ((String)"Firmware version check failed, got HTTP response code").c_str()); client.publish(mqtt_topic_fw_info, ((String)httpCode).c_str()); } httpClient.end(); }
  6. Det kommer (kanskje) litt mindre snø helt inntil porten enn under åpen himmel + alt snøen kan bli komprimert rett forran porten hvis pga. varmluft som siger ut av garasjen. Jeg har ikke oppvarmet garasje, men det er varmere inni en utenfor.
  7. Det var visst en dårlig idè å vinkle sensoren ut. Feilraten spratt i været.
  8. Nå prøvde jeg å vinkle sensoren litt ut slik at den treffer bakken helt utenfor garasjen. Det gikk bra så lenge porten er igjen. De to toppene er når porten er åpen: Her satt jeg søppeldunken under: Det er ikke meldt nedbør den neste uken så det er bare å smøre seg med tålmodighet.
  9. Jeg hadde planlagt å peke sensoren litt ut slik at det traff ett punkt ca. 20 cm lenger ut en loddrett. Men siden jeg plagdes med å få sikkelig data på slutten så endte den nok helt loddrett eller bitte litt inn mot garasjeporten. Nå når jeg vet at jeg oppnår best resultat med garasjeporten igjen så kanskje jeg prøver på nytt å vinkle den litt ut. Utenfor sensoren så er raftekassen, ca 1,5 meter opp og 30-40 cm utover. Det er ca. 35-45 cm fra sensoren inn til garasjeporten. Ta tallene med en klype salt Det er kjempelenge siden jeg bestillte den trafoen, men nå var jeg gått tom for mobilladere så jeg hadde ikke noe valg. Jeg mener å huske at jeg leste noen reviews og fant ut at prisen var grei nok til at jeg tør å bruke den. Foreløpig med stikkontakt i garasjen. De ethernet-modulene er kjøpt separat. Altså kortet og pluggen hver for seg. Søk etter "RJ45 Ethernet Connector Breakout Board" på E-Bay. Planen er å vite når jeg står opp om vi må stresse for å rekke å måkke eller ikke. På sikt kan det være fornuftig å stå opp 15 minutter tidligere
  10. xibriz

    Kommunikasjonsproblem

    Ja, jeg tror flere opplever at de spyr ut data alt for ofte. Det står litt om det her:
  11. Da fikk jeg omsider montert sensoren. Den tenkte plasseringen fungerte tilsynelatende bra når jeg testet med å holde boksen der jeg hadde tenkt å skru den fast. Etter å ha skrudd den fast og kablet opp fikk jeg bare tulledata fra distansesensoren. Etter mye feilsøking, sjekking av kabel, prøving med bilen under (som fungerte OK), så tenkte jeg at jeg skulle prøve med garasjeporten igjen. Da fungerte det (heldigvis) som forventet Jeg hadde ikke lyst til å flytte den etter å ha kablet opp. Så sensoren er nok helt i grenseland på avstand (260cm). Jeg antar at det er vinkelen mot objektet som er supernøye med så lang avstand. Jeg får se bonusen i det.. den dobler opp som garasjeportsensor... tulledata = porten åpen ? Foreløpige tall viser hopp på ca. 2 cm når ingenting beveger seg der ute.
  12. Det var en bra artikkel om akkurat det samme som jeg prøver på @backspace Heldigvis har jeg fast strøm til prosjektet. Men jeg ser at det ikke er anbefalt å ha lengere enn 3.3 meter til objektet. Min tenkte plassering er ca. 3 meter unna bakkenivå og i en liten vinkel, mulig jeg må se på alternative lokasjoner i kveld. Jeg vil anta at man får en del feil når det snør, kanskje når det regner også? Time will show
  13. Ja det stemmer, man kan velge mellom de 3 forskjellige typene på websiden for konfigurasjon når ESPen starter som AP, men når man ser i koden så er det kun Kalifa som blir håndtert.
  14. Det kan jeg legge ut i kveld. Men det er ingen som vet hvordan denne avstandsmåleren reagerer på snø enda
  15. @ArnieO @roarfred kom aldri lengere enn å implementere Kaifa. Jeg har brekket inn Kamstrup 1- og 3-fase i stedet for Kaifa. Så nå vet du (og alle andre) hvorfor den ene kodebasen fungerer for deg
  16. Det er litt vanskelig å se på mobilen, men det ser ut som at det bare er liste 1 der. De som ikke er 228 er nok feillesninger. Mener liste 2 er på rett over 300 byte. Her er en gammel sample (før de endret firmware) https://github.com/xibriz/AmsToMqttBridge/tree/master/Samples/Kamstrup Men jeg får garantert liste 2, proof:
  17. Da er prototypen klar. Monterer i morgen.
  18. Her er for en 3-fase https://www.hjemmeautomasjon.no/applications/core/interface/file/attachment.php?id=4584
  19. Ja. Helt vanlig elko 1-pol bryter. Jeg har to lamper med slike pærer på forskjellige plasser i huset, og det er bare den ene som har pærer som gløder.
  20. Her er en LED-pære som gløder, bak en vanlig 1-pols bryter.
  21. Vær obs på at den sensoren som @Moskus linker til maks kan måle ett objekt 2-3 cm unna. Helst mindre. Den finnes med forskjellige linser, opp til 50cm, men det må du sette deg inn i. Sensoren koster 2-300,- med den største linsen.
×
×
  • 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.