Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Vraag


  • teunis1991
  • Registratie: Mei 2014
  • Laatst online: 02-09-2023
Mijn vraag

Ik ben al een tijd aan het klooien om mijn Arduino te laten babbelen met Domoticz. Ik heb een Arduino Mega met Ethernet shield W5100. De inputs en outputs hiervan wil ik graag inlezen in domoticz. Ik heb dus gevonden dat de enige manier via MQTT is. Hiervoor heb ik een broker nodig maar dit krijg ik niet echt voor elkaar. https://github.com/martin-ger/uMQTTBroker Hier is dus een setup voor de Arduino met een ESP8266. Dit werkt dus niet voor die van mij. Kan iemand dit misschien ombouwen naar een W5100 set up? Mosquitto is dus ook niet te krijgen voor mijn NAS anders zou ik hierop een Broker kunnen laten draaien. |:(

Relevante software en hardware die ik gebruik

Arduino Mega 2560 + Ethernet Shield W5100
Asustor 6202T met Domoticz geinstalleerd

Alle reacties


  • balk
  • Registratie: Januari 2000
  • Laatst online: 21:23
Ik heb geen ervaring met asustor maar het lijkt er op dat je docker images er op kan draaien. En dan zou je ook een MQTT broker moeten kunnen draaien, zoals Mosquitto.

[ Voor 14% gewijzigd door balk op 28-12-2019 17:46 . Reden: link toegevoegd ]


  • teunis1991
  • Registratie: Mei 2014
  • Laatst online: 02-09-2023
Wat zijn docker images?

  • balk
  • Registratie: Januari 2000
  • Laatst online: 21:23
Docker is een platform waarmee je applicatie-containers kan draaien op een computer, zonder werkelijk software te installeren. Die container kan bijvoorbeeld een MQTT broker zijn. In die container zitten alle zaken die nodig zijn om deze broker uit te voeren en kan dus als een container ergens geplaatst worden; alles wat het nodig heeft zit er in. Die container kun je starten met een simpel commando, en wellicht wel via grafische interface op jouw NAS. Bij het starten kijkt docker of de container al gedownload is; zo niet dan wordt deze nog even gedownload.

Is dit geschikt voor jouw model NAS?
https://www.asustor.com/a...l/app_detail?id=754&type=

Als dat werkt kun je deze docker installeren door dit commando uit te voeren:
code:
1
docker run -it -p 1883:1883 eclipse-mosquitto

dit downloadt en start de mosquitto container, en opent poort 1883 die je nodig hebt voor MQTT.

Je kunt daarna de arduino laten verbinden met het IP van jouw NAS en die zal dan de gewenste informatie naar de broker sturen. Weet je wat MQTT is?

  • teunis1991
  • Registratie: Mei 2014
  • Laatst online: 02-09-2023
Thanks, ik heb dat nu draaiend :)

Ik weet dat MQTT een protocol is om verschillende apparaten met elkaar te laten praten en daar houd het op. Zowel de Arduino als Domoticz zijn verbonden met de MQTT Broker. Alleen nu moet ik nog voor elkaar zien te krijgen hoe ik info verstuur naar Domoticz en Domoticz informatie laten sturen naar Arduino en de Arduino daar iets mee laten doen

  • balk
  • Registratie: Januari 2000
  • Laatst online: 21:23
MQTT is een soort twitter maar dan voor apparaten. Het ene apparaat publishes iets op een topic, het andere subscribes op dat topic. Bijvoorbeeld, Arduino1 hangt in de badkamer, met een vochtigheidssensor. Arduino2 kan de ventilatie aansturen, en ertussen zit een Home Automation systeem.

Arduino1 stuurt vochtigheidswaardes naar topic eersteverdieping/badkamer/vochtigheidssensor/relatievevochtigheid. Jouw Home Automation systeem luistert daarnaar en indien de waarde te hoog is zal er een bericht on naar topic zolder/ventilatie/switch gaan. Die gaat dan aan.

[edit]
waarom die slashes? De vochtigheidssensor geeft wellicht meerdere signalen:
eersteverdieping/badkamer/vochtigheidssensor/relatievevochtigheid
eersteverdieping/badkamer/vochtigheidssensor/absolutevochtigheid
eersteverdieping/badkamer/vochtigheidssensor/temperatuur
eersteverdieping/badkamer/vochtigheidssensor/status

Op die manier kun je sensoren groepperen. En je kunt met de # luisteren naar alle topics van die sensor.
eersteverdieping/badkamer/vochtigheidssensor/#

[ Voor 30% gewijzigd door balk op 29-12-2019 13:04 ]


  • teunis1991
  • Registratie: Mei 2014
  • Laatst online: 02-09-2023
Ik begin het een klein beetje door te krijgen. Heb alleen niet zo veel ervaring met het programmeren van een Arduino. Ik heb dus het volgende:

Op De A0 van mijn Arduino heb ik een pulsdrukker aangesloten deze moet een lamp gaan schakelen in Domoticz

In Domoticz heb ik een schakelaar aangemaakt met IDX code 0, hier komt het signaal binnen van Arduino.
Ik heb hier ook een lamp aangemaakt die zit op een Ethernet relais module (stand alone op dit moment). De ethernet module luistert naar commandos zoals: 192.168.178.2/30000/01 betekent dat de lamp aan gaat en /00 dat ie uit gaat. Die lamp en de schakelaar heb ik in domoticz aan elkaar gekoppeld zodat als het signaal van de Arduino komt de schakelaar aan gaat en dus ook gelijk de lamp. En ik kan dus via de app ook gewoon de lamp aan zetten. Dit is de code die ik nu heb op mijn Arduino:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <SPI.h>
#include <Ethernet.h>
#include <PubSubClient.h>

int schakelaar1 = A0;
int switchhigh = 1023;


// Update these with values suitable for your network.
byte mac[]    = {  0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
IPAddress ip(192, 168, 178, 15);
IPAddress server(192, 168, 178, 65);

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();
}

EthernetClient ethClient;
PubSubClient client(ethClient);

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (client.connect("arduinoClient")) {
      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(5000);
    }
  }
}

void setup()
{
  Serial.begin(57600);

  client.setServer(server, 1883);
  client.setCallback(callback);

  Ethernet.begin(mac, ip);
  // Allow the hardware to sort itself out
  delay(1500);
}

void loop(){
  
   // ... and resubscribe
      client.subscribe("domoticz/out");
            // ... and resubscribe
      client.subscribe("domoticz/in");

if (schakelaar1 = switchhigh) {
  client.publish("domoticz/in", "{\"idx\" : 1, \"nvalue\" : 1, \"svalue\" : \"23.4\"}"); ;
}
else {
   client.publish("domoticz/in", "{\"idx\" : 1, \"nvalue\" : 0, \"svalue\" : \"23.4\"}");;
}
      
            // Once connected, publish an announcement...
      //client.publish("domoticz/in", "{\"idx\" : 1, \"nvalue\" : 1, \"svalue\" : \"23.4\"}");
  if (!client.connected()) {
    reconnect();
  }
  client.loop();
}


Het eerste probleem is nu al dat Arduino steeds een nValue van 1 blijft geven terwijl ik de schakelaar niet indruk. Wat doe ik hier fout?

  • balk
  • Registratie: Januari 2000
  • Laatst online: 21:23
ik ben niet echt een programmeur dus ik kan je hier niet mee helpen. Je kunt wel https://esphome.io/ installeren om het jezelf makkelijker te maken. Werkt uitstekend, ook met MQTT. Je kunt ook ESPEasy gebruiken
Pagina: 1