Read the statement by Michael Teeuw here.
Display different Roomtemperature on MagicMirror
-
@Xilef
You will need the MMM-Temperature module and not the Embed module as you do not want to display a website but parse the JSON data object and display its contents.
The config will look something like:{ module: "MMM-Temperature", position: "bottom_right", config: { sensors: [ { name: "ESP", script: "/bin/nc", args: "-w3 192.168.178.106" }, ] }, },
But you will need to fix the missing sensor first.
Can you please check your wiring and use this sketch instead of the other one. I only removed one line which i do not think is the problem but i can not test the sketch at the moment.
#include <WiFi.h> #include <Wire.h> #include <Adafruit_Sensor.h> #include <Adafruit_BME280.h> const char* ssid = "##ADD_WIFI_SSID_HERE"; const char* password = "##ADD_WIFI_PASSWORD_HERE"; //ENTER STATIC IP OF THE ESP32 BOARD HERE IPAddress local_IP(192, 168, 0, 2); IPAddress gateway(192, 168, 0, 1); IPAddress subnet(255, 255, 255, 0); IPAddress primaryDNS(192, 168, 0, 1); IPAddress secondaryDNS(8, 8, 8, 8); Adafruit_BME280 bme; WiFiServer server(80); void setup() { Serial.begin(115200); if (!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) { Serial.println("STA Failed to configure"); } 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.print("IP address: "); Serial.println(WiFi.localIP()); Serial.print("ESP Mac Address: "); Serial.println(WiFi.macAddress()); Serial.print("Subnet Mask: "); Serial.println(WiFi.subnetMask()); Serial.print("Gateway IP: "); Serial.println(WiFi.gatewayIP()); Serial.print("DNS: "); Serial.println(WiFi.dnsIP()); if (!bme.begin(0x76)) { Serial.println("Couldn't find sensor!"); while (1); } server.begin(); } void loop() { float temp = bme.readTemperature(); float tempf = temp * 1.8 + 32; float rel_hum = bme.readHumidity(); WiFiClient client = server.available(); if (client) { Serial.println("New Client."); client.println("{"); client.print(" \"temperature_c\": "); client.print(temp); client.println(","); client.print(" \"temperature_f\": "); client.print(tempf); client.println(","); client.print(" \"humidity\": "); client.print(rel_hum); client.println(","); client.println(" \"error\": false"); client.println("}"); client.stop(); Serial.println("Client disconnected."); Serial.println(""); } delay(100); }
-
@wishmaster270 i connected an other sensor and it doesnt showed me the error message, i will try the sketch tomorrow, the MMM_Temperature module is installed and works, but doesnt show any data, im gona try to fix it tomorrow
-
@wishmaster270 everything worked, you just forgot to add the “80” here:
i just set up a second sensor and cloned the module
if i go into my browser and type the two different IPs every sensor shows his own data, but the mirror displays 2times the data of sensor 2:
(sensor1: “test” | sensor2: “test2”)
how do i fix that? -
@Xilef Perfect. One step further.
You only need one instance of the module. So your config will look something like:
{ module: "MMM-Temperature", position: "middle_center", config: { sensors: [ { name: "test", script: "/bin/nc", args: "-w3 192.168.178.106 80" }, { name: "test2", script: "/bin/nc", args: "-w3 192.168.178.108 80" }, ] }, },
-
@wishmaster270 yes, it works
and in the future i can experiment with the MMM-ValuesByNotification Module to customize the module, right?
and a big thank you for the help and the quick reply
-
@Xilef Perfect.
Yes, the ValuesByNotification module is very powerful but the configuration can be get complex very quickly. You will need my other module CommandToNotification, too.