- knip -
Dan moet ik even een multimeter ergens regelen of kan dit ook op een andere manier?Raymond P schreef op donderdag 9 maart 2023 @ 12:51:
@HF5236 Gezien je kabels hebt gesoldeerd: meet rx/tx eens door op kortsluiting.
Je kunt het ook visueel inspecteren, wat wel eens voorkomt bij gebruik van kabel (neem voor het gemak aan dat dat geen massieve kern was) een strand brugt tussen twee soldeeroogjes. Wel iets waar je ontzettend makkelijk overheen kijkt.
fwiw: op een esp32-s2 zou je aan praktisch elke pin uart kunnen koppelen en had het switchen in code gewoon gewerkt. Of dat ook zo is in esphome weet ik niet.
- knip -
Ik heb wat zitten uitproberen met de de ESP-32 CAM die ik bij Tinytronics gekocht heb (ESP32-CAM - WiFi and Bluetooth Board with OV2640 Camera, AI-thinker-model), met de webcamserver sketch.renevdstap schreef op zondag 22 januari 2023 @ 17:56:
Ik lees dat meerdere mensen issues hebben met de stabiliteit van de ESP-32 CAM. Nu heb ik net voor het eerst ook twee van deze modules besteld en krijg ze ook niet stabiel aan de praat. Eerst probeerde ik ze te flashen vanuit ESPHOME maar daar lijkt in de laatste versie een bug te zitten. Vervolgens heb ik ze geflasht vanuit Arduino IDE volgens de AI thinker versie, hoewel het geen originele is. Ik krijg wel een webinterface online maar met moeite komt daar een foto uit. De stream wil al helemaal niet starten.
Ook bij mij vermoed ik dat het aan de stroomtoevoer ligt. Heb het geprobeerd via de bijgeleverde seriele controller, vanaf een ESP8266 en vanaf een Raspberry PI. Heb ook een USB kabel gestript maar die kwam helemaal niet online.
Hebben jullie nog advies voor een stabiele stroomtoevoer? Of ervaring met een bepaalde versie ESP-32 CAM module? Ik heb de volgende:
https://www.amazon.nl/dp/...o2ov_dt_b_product_details
UPDATE:
Ik heb inmiddels een derde ESP-32 CAM ontvangen en die werkt zonder problemen. Dat is denk ik het risico van het shoppen op Amazon.
Als ik deze vanaf mijn PC met 5 Volt voedt met de FT232RL 3.3v-5v TTL USB Serial Port Adapter van Tinytronics kan ik een resolutie van 1600x1200 pixels met een refresh rate van 1 beeld per 2 à 3 seconden krijgen. De serial monitor van de Arduino IDE geeft daarbij overigens geen melding van brown-outs.
Als ik dezelfde voeding via een ESP32-CAM-MB Programmer Shield van Tinytronics gebruik, dan kan ik deze framerate alleen bij 320x200 pixels krijgen. Bij 1600x1200 bouwt er bijna geen beeld meer op.
Ik neem aan dat ik een add-on bordje nodig heb met losse 5 Volt-voeding aansluiting, waar de ESP-32 CAM opgeprikt kan worden, voor de beste framerate bij 1600x1200 pixels?
Deze is geflasht met ESPHome.
Als ik aan de draainkop op de lamp draai, wordt de lamp feller, of zwakker.
Echter als hij "te ver dimt" gaat hij uit.
Dimmen gaat via dit stukje:
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
| - platform: rotary_encoder id: rotation pin_a: GPIO27 pin_b: GPIO26 resolution: 2 on_value: # Draait iemand aan de knop? then: - if: #Ga na of de lamp aan staat? condition: - light.is_on: light1 then: # Staat de lamp aan, ga kijken of hij is ingedukt - if: condition: - lambda: 'return id(button).state;' then: # Ja, knop ingedrukt, stel temperatuur in - lambda: |- auto min_temp = id(light1).get_traits().get_min_mireds(); auto max_temp = id(light1).get_traits().get_max_mireds(); auto cur_temp = id(light1).current_values.get_color_temperature(); auto new_temp = max(min_temp, min(max_temp, cur_temp + (x*10))); auto call = id(light1).turn_on(); call.set_color_temperature(new_temp); call.perform(); else: # niet ingedrukt, stel felheid in - light.dim_relative: id: light1 relative_brightness: !lambda |- return x / 20.0; # Reset de waarde - sensor.rotary_encoder.set_value: id: rotation value: 0 |
Ik dacht het zelf "simpel" te kunnen oplossen door dit toe te passen:
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
| - platform: rotary_encoder id: rotation pin_a: GPIO27 pin_b: GPIO26 resolution: 2 on_value: # Draait iemand aan de knop? then: - if: #Ga na of de lamp aan staat? condition: - light.is_on: light1 then: # Staat de lamp aan, ga kijken of hij is ingedukt - if: condition: - lambda: 'return id(button).state;' then: # Ja, knop ingedrukt, stel temperatuur in - lambda: |- auto min_temp = id(light1).get_traits().get_min_mireds(); auto max_temp = id(light1).get_traits().get_max_mireds(); auto cur_temp = id(light1).current_values.get_color_temperature(); auto new_temp = max(min_temp, min(max_temp, cur_temp + (x*10))); auto call = id(light1).turn_on(); call.set_color_temperature(new_temp); call.perform(); else: # niet ingedrukt, stel felheid in - light.dim_relative: id: light1 relative_brightness: !lambda |- if (x / 25.0 >= 2){ return x / 25.0; } else { return 2; } # Reset de waarde - sensor.rotary_encoder.set_value: id: rotation value: 0 |
Dit werkt helaas niet, en de waarde/felheid blijft altijd op 100%
Iemand een idee hoe ik ervoor kan zorgen dat hij niet uitgaat bij "te ver dimmen"?
Iemand een idee hoe ik dit voor elkaar kan krijgen?
[ Voor 64% gewijzigd door PurpleBlue op 12-03-2023 16:06 . Reden: Iets meer yaml code ]
Als ik nu in home assitant kijk staat deze ook in esphome , hier staat adoptie bij.
Wat kan ik hiermee en moet ik dit doen?
Ik heb in de esp een aparte bin file in geladen met specifieke software voor zonnepanelen , deze staat verder (voorlopig)los van HAvonkkie schreef op zondag 12 maart 2023 @ 20:11:
als je hem met esphome heb geprogrammeert zou hij er al in moeten staan zo niet voegt hij hem toe zodat je hem uit esphome kan beheren
Makkelijkste is denk ik om je originele code te omringen met een max(), zo komt-ie nooit onder een minimumwaarde (in dit geval 2.0).PurpleBlue schreef op zondag 12 maart 2023 @ 13:39:
Ik heb een vraagje over een stukje lambda waar ik niet uitkom bij mijn Mi-Desklamp 1S.
Deze is geflasht met ESPHome.
Als ik aan de draainkop op de lamp draai, wordt de lamp feller, of zwakker.
Echter als hij "te ver dimt" gaat hij uit.
1
2
3
4
5
6
7
| #... # niet ingedrukt, stel felheid in - light.dim_relative: id: light1 relative_brightness: !lambda |- return max(x / 20.0, 2.0); #... |
Dank, echter blijft hij nu op 100% staan.Kalkran schreef op maandag 13 maart 2023 @ 14:41:
[...]
Makkelijkste is denk ik om je originele code te omringen met een max(), zo komt-ie nooit onder een minimumwaarde (in dit geval 2.0).
code:
1 2 3 4 5 6 7 #... # niet ingedrukt, stel felheid in - light.dim_relative: id: light1 relative_brightness: !lambda |- return max(x / 20.0, 2.0); #...
Ik zie in de logging als ik naar links draai:
1
2
3
4
5
6
7
8
| [16:11:20][D][sensor:127]: 'rotation': Sending state -1.00000 steps with 0 decimals of accuracy [16:11:20][D][custom:092]: The value is: -0.050000 [16:11:20][D][light:035]: 'Bureaulamp Light' Setting: [16:11:20][D][light:050]: Brightness: 100% [16:11:20][D][sensor:127]: 'rotation': Sending state 0.00000 steps with 0 decimals of accuracy [16:11:20][D][custom:092]: The value is: 0.000000 [16:11:20][D][light:035]: 'Bureaulamp Light' Setting: [16:11:20][D][light:050]: Brightness: 100% |
blijkbaar doet hij een stapje van "-0.050000" bij dimmen, of "0.050000" bij feller ten opzichte van de bestaande "felheid"
Ik moet dus eerst zien te achterhalen wat de huidige status is, en welke kant de rotary op gaat denk ik?
Edit:
Het is gelukt!:
Via de "id(rotation).state" kan ik bepalen of deze linksom of rechtsom draait (-1.0 of 1.0)
Verder een check via "id(light1)->remote_values.get_brightness()" gekeken of hij niet onder de gestelde waarde komt.
Hij blijft nu netjes gedimt, en bij inschakelen gaat hij dan ook naar laatste waarde in plaats van 100%
Voor de geïnteresseerde het resultaat:
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
| - platform: rotary_encoder name: "Rotary decoder" id: rotation pin_a: GPIO27 pin_b: GPIO26 resolution: 2 on_value: # Draait iemand aan de knop? then: - if: #Ga na of de lamp aan staat? condition: - light.is_on: light1 then: # Staat de lamp aan, ga kijken of hij is ingedukt - if: condition: - lambda: 'return id(button).state;' then: # Ja, knop ingedrukt, stel temperatuur in - lambda: |- auto min_temp = id(light1).get_traits().get_min_mireds(); auto max_temp = id(light1).get_traits().get_max_mireds(); auto cur_temp = id(light1).current_values.get_color_temperature(); auto new_temp = max(min_temp, min(max_temp, cur_temp + (x*5))); auto call = id(light1).turn_on(); call.set_color_temperature(new_temp); call.perform(); else: - if: condition: - lambda: 'return id(rotation).state == -1.0;' then: - logger.log: "Links" - light.dim_relative: id: light1 relative_brightness: !lambda |- if (id(light1)->remote_values.get_brightness() >= 0.04) { return x / 25.0; } else { return 0.0; }; - if: condition: - lambda: 'return id(rotation).state == 1.0;' then: - logger.log: "Rechts" - light.dim_relative: id: light1 relative_brightness: !lambda |- return x / 25.0; # Reset de waarde naar 0 - sensor.rotary_encoder.set_value: id: rotation value: 0 |
[ Voor 52% gewijzigd door PurpleBlue op 14-03-2023 15:52 ]
Hoe kan ik ervoor zorgen dat hij direct boot.py (boot.py is leeg) -> main.py doet?
Via onderstaande code lees ik in loop() de eventuele input op sofwareserial uit en stuur deze door naar de hardware tx.
1
2
3
| while (swSer.available() > 0) { Serial.write(swSer.read()); } |
Echter als het apparaat aanstaat, komt er een constante stroom data vanaf het display. Dit resulteert in een constante stroom van data (opvragen van status-updates). Het lijkt erop dit dit eigenlijk altijd binnen korte of langere termijn leidt tot een reset van de esp8266.
Als ik dan esp.getResetReason() opvraag krijg ik deze output
1
| Fatal exception:4 flag:1 (Hardware Watchdog) epc1:0x40102fe5 epc2:0x00000000 epc3:0x00000000 excvaddr:0x00000000 depc:0x00000000 |
Alleen ik kan niet echt herleiden wat nu precies de oorzaak is. Ik heb al verschillende esp's geprobeerd, dus het lijkt me geen daadwerkelijk hardware probleem. Als de koffiemachine uitstaat (er staan dan wel spanning op de esp8266) kan het apparaat een hele tijd draaien zonder reset, dus het lijkt te maken te hebben met zodra er daadwerkelijk data binnenkomt.
Concreet heb ik 2 vragen
1. Is mijn manier van 'doorsturen' van seriële data via softwareserial een ok-oplossing?
2. Wat kan de oorzaak zijn van het resetten van de esp via de watchdog?
En moet je beide kanten (dus display en main board) zowel zenden als ontvangen?
Het is alleen ontvangen vanaf het display. De TX vanaf de body is aangesloten op de RX van zowel de esp als op de RX van het display.
Schematische poging:
1
2
3
| [display] TX ----> RX(software) [ESP] TX ----> RX [main] RX <--- TX RX <------------------------------------|^ |
Het is qua aansluiting hierop gebaseerd

Neem even aan dat er een foutje in het schema staat en dat de klassieke verwisseling van Rx en Tx op het main board. Of het is mooie onhandige labeling
Dus je wilt alleen naar de Txo van het display luisteren en dat doorsturen naar de Rxi van het main board? Wat het main board tegen het display roept wil je niet weten? Dan zou je namelijk ook gewoon af kunnen met een enkele Serial waarvan je de Rxi voor het display gebruikt en de Txo naar het main board stuurt.
En klein dingetje nog, gezien de rest op 5V werkt, is het serial signaal wel 3v3? ESP is niet 5V tolerant.
https://github.com/michelsciortino/esphome-aurora-inverter
Ik zou ook een upload willen naar pvoutput. Zoals bijvoorbeeld in deze code..
https://github.com/jantenhove/GoodWeLogger
Is dit (eenvoudig) te combineren? Beide omvormers gebruiken rs485 (modbus?)
Als ik die "constante stroom data" letterlijk neem, kan het zijn dat je esp continue in de while loop blijft hangen. Dan worden de normale esp house keeping taken niet uitgevoerd en dus ook de wdt niet gereset.bartbh schreef op woensdag 15 maart 2023 @ 17:45:
code:
1 2 3 while (swSer.available() > 0) { Serial.write(swSer.read()); }
Echter als het apparaat aanstaat, komt er een constante stroom data vanaf het display. Dit resulteert in een constante stroom van data (opvragen van status-updates). Het lijkt erop dit dit eigenlijk altijd binnen korte of langere termijn leidt tot een reset van de esp8266.
Dat kan je oplossen door een yield() in de while loop op te nemen.
1
2
3
4
| while (swSer.available() > 0) { Serial.write(swSer.read()); yield(); } |
Van arduino.cc:
Scheduler - yield()
Passes control to other tasks when called. Ideally yield() should be used in functions that will take awhile to complete.
Volgens de docs zou t/m 115200 nog moeten kunnen of zit ik daarmee al aan de max?Septillion schreef op woensdag 15 maart 2023 @ 20:51:
@bartbh 115200 is vaak wel pittig voor SoftSerial....
Plaatje is niet van mij. Doel is om zowel via display (met input buttons) als via esp8266 de status uit te lezen en input te geven.Neem even aan dat er een foutje in het schema staat en dat de klassieke verwisseling van Rx en Tx op het main board. Of het is mooie onhandige labeling
Dus je wilt alleen naar de Txo van het display luisteren en dat doorsturen naar de Rxi van het main board? Wat het main board tegen het display roept wil je niet weten? Dan zou je namelijk ook gewoon af kunnen met een enkele Serial waarvan je de Rxi voor het display gebruikt en de Txo naar het main board stuurt.
Daarom gaat de Tx van het main board naar zowel het display als ook naar de esp8266. Dus 1 TX naar 2RX.
Daarnaast gaat dus de TX van het display (met de input commands van de buttons) naar de RX van SoftwareSerial. En dan via de TX van de esp8266 naar de RX van het main board.
Deze oplossing werkt an sich prima. Ik kan de status uitlezen via de esp8266 én input geven via zowel display/buttons als via de esp8266. Punt is dat de esp8266 dus zichzelf reset 1x in de zoveel tijd waardoor deze even niet reageert. Ergens verslikt ie zich dus in. En als de esp zich verslikt en opnieuw opstart wordt dus ook de data vanaf het display/buttons niet meer doorgestuurd en is het hele apparaat voor een paar seconden even niet te bedienen.
Alleen hoe lang de esp blijft draaien heb ik nog geen goed patroon in kunnen ontdekken. Dat kan 5-15 seconden zijn maar soms ook wel 5 min of meer.
Zowel met 5v als met een logic level converter er tussen: de oplossing werkt wel maar de esp8266 blijft zichzelf af en toe resetten.En klein dingetje nog, gezien de rest op 5V werkt, is het serial signaal wel 3v3? ESP is niet 5V tolerant.
De webinterface van de esp werkt wel, dus dan ga ik er vanuit dat deze zich niet verslikt in de while loop?Albert_x schreef op woensdag 15 maart 2023 @ 21:56:
[...]
Als ik die "constante stroom data" letterlijk neem, kan het zijn dat je esp continue in de while loop blijft hangen. Dan worden de normale esp house keeping taken niet uitgevoerd en dus ook de wdt niet gereset.
Dat kan je oplossen door een yield() in de while loop op te nemen.
code:
1 2 3 4 while (swSer.available() > 0) { Serial.write(swSer.read()); yield(); }
Van arduino.cc:
[...]
Het lijkt er alleen op dat met if upsecs%300==0 het commando twee keer wordt gerund. Vermoedelijk omdat hij alleen kijkt naar de seconden en niet ook de miliseconden.
Iemand wat meer ervaring met de Tasmota scripting engine die weet hoe ik dat kan voorkomen?
Ik heb ook if uptime%5==0 geprobeerd (minutes since start), maar dan triggert het script continu
https://tasmota.github.io...nguage/#special-variables
[ Voor 66% gewijzigd door ThinkPad op 16-03-2023 11:53 ]
Als je zeker weet dat de webinterface ook de laatste 8 sec voor de reset nog werkte niet nee. Dat is de timeout van de hardware watchdog.bartbh schreef op donderdag 16 maart 2023 @ 00:12:
De webinterface van de esp werkt wel, dus dan ga ik er vanuit dat deze zich niet verslikt in de while loop?

Maar begin toch te twijfelen of dat echt de reden van reset is. Draait je ESP echt alleen die forward while of nog meer? Anders denk ik niet dat het de SoftSerial is die voor problemen zorgt maar simpelweg een ander deel van je programma zodra dat werkelijk data te verwerken krijgt. En dat er dan ergens lang in een functie gehangen wordt ipv weer naar loop() te gaan.
Paar vuistregels:
- Geen delay() (ook al doet die op een ESP standaard wel yield() volgens mij)
- Voorzichtig met while() (maar eigenlijk alle loops), alleen toepassen als je weet dat je altijd snel er doorheen bent
- Gebruik de loop() werkelijk om te loopen, dus zorg dat je niet in een functie blijft hangen. Heb je veel te doen, maak dan een state machine en keer terug naar loop() en ga de volgende keer weer verder waar je was.
Overigens was de opmerking over 5V niet zo zeer voor het crashen. Maar dat de ESP er gewoon niet voor gemaakt is, level shifter toepassen van 5V => 3v3 is dus wel verplicht. Ook al hebben genoeg mensen laten zien dat hij niet gelijk stuk gaat maar door een chip buiten spec te gebruiken ka n je mooie spook zaken krijgen, zeker op lange termijn.
- knip -
ThinkPad schreef op donderdag 16 maart 2023 @ 11:35:
ThinkPad in "Datalogging: PV systemen" Sonoff POW R2 rechtstreeks laten uploaden naar PVOutput
Het lijkt er alleen op dat met if upsecs%300==0 het commando twee keer wordt gerund. Vermoedelijk omdat hij alleen kijkt naar de seconden en niet ook de miliseconden.
Iemand wat meer ervaring met de Tasmota scripting engine die weet hoe ik dat kan voorkomen?
Ik heb ook if uptime%5==0 geprobeerd (minutes since start), maar dan triggert het script continu
https://tasmota.github.io...nguage/#special-variables
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
| >D 42 ;long string required for key y=0 m=0 d=0 b=0 key="Your-API-key" id="Your-System-ID" ws="WebSend [pvoutput.org]" et=0 p=0 vlt=0 >T et=((ENERGY#Total)*1000) p=ENERGY#Power vlt=ENERGY#Voltage ; every 5 minutes if upsecs%300==0 and b==0 then b=1 y=sb(tstamp 0 4) m=sb(tstamp 5 2) d=sb(tstamp 8 2) =>%ws%/service/r2/addstatus.jsp?key=%key%&sid=%id%&d=%1.0(y)%%2.0(m)%%2.0(d)%&t=%1(sb(tstamp 11 5))%&v1=%s(2.0et)%&v2=%s(2.0p)%&v6=%s(2.0vlt)%&c1=2 else b=0 endif |
@ThinkPad Denk dat zoiets er wel voor moet zorgen dat hij niet twee keer getriggerd kan worden doordat hij snel genoeg (aka, binnen een seconde) weer loopt. Weet alleen niet of de variabele static zijn dus nog hun waarde hebben de volgende loop? Of is daarvoor een "permanent variable" voor nodig?
[ Voor 29% gewijzigd door Septillion op 16-03-2023 15:08 ]
Bron:
https://www.qworqs.com/20...-yes-they-officially-are/
https://www.facebook.com/...33731442/?hc_location=ufi (facebook post van de oprichten van espressif)
Alvast hartelijk bedankt voor al jullie hulp en reacties, Tim Bots
Om te testen heb ik ook even de sketch van mijn inspiratie geladen (https://github.com/chris7...ESP8266/withWebserver.cpp) maar daar treed hetzelfde probleem in op.
Om dat uit te sluiten zal ik denk ik eens 3 dingen doen
1. yield() toevoegen in de loop
2. de while loop tijdelijk uitschakelen
3. een sketch maken met daarin alleen de while loop voor het doorsturen van de serial input
(4). de soft en hard serial eens omwisselen
@Albert_x Nee, niet 100% zeker. De webinterface is dan ook even non-responsive en durf eerlijk niet te zeggen of dat inderdaad rond die 8 seconden is. Dus ik ga zeker yield() eens toevoegen.
edit: nabrander
Zou een ESP32 nog verschil kunnen maken?
Alvast hartelijk bedankt voor al jullie hulp en reacties, Tim Bots
Ja, die heeft twee hardware uarts dus dan heb je die softwareserial niet nodig...bartbh schreef op donderdag 16 maart 2023 @ 13:29:
edit: nabrander
Zou een ESP32 nog verschil kunnen maken?
Sterker nog. De ESP32 heeft 3 UARTs. Standaard zijn er echter maar 2 bruikbaar.Albert_x schreef op donderdag 16 maart 2023 @ 13:35:
[...]
Ja, die heeft twee hardware uarts dus dan heb je die softwareserial niet nodig...
Echter omdat de ESP32 een IO matrix aan boord heeft kun je middels code de poorten verplaatsen. Als je in de setup() methode Serial.begin() aanroept met de gewenste pinnen als argumenten dan kun je de pinnen aanpassen naar wens.*
1
2
3
4
5
6
| //Set the serial 0 port to 9600 baud on pins 2 and 4 Serial1.begin(9600, SERIAL_8N1, 2, 4); //Set the serial 1 port to 9600 baud on pins 15 and 0 Serial1.begin(9600, SERIAL_8N1, 15, 0); //Set the serial 1 port to 9600 baud on pins 32 and 33 Serial1.begin(9600, SERIAL_8N1, 33, 32); |
bron: https://microcontrollersl...mmunication-pins-example/
*de pinnen 35, 36, 37 and 39 zijn "input only". (zie https://randomnerdtutoria...2-pinout-reference-gpios/)
Mocht je toch een output pin op een input only pin aansluiten zal de ESP vanzelf een foutmelding genereren in de seriële log.
Alvast hartelijk bedankt voor al jullie hulp en reacties, Tim Bots
Maar denk dus niet dat daar het probleem zit, denk dat het programma zich ergens anders ophangt als er daadwerkelijk data te verwerken valt.
Goed idee, maar helaas. Blijkbaar is de trigger gewoon te snel, dat hij binnen één seconde al twee keer kan triggeren.Septillion schreef op donderdag 16 maart 2023 @ 13:02:
[...]
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 >D 42 ;long string required for key y=0 m=0 d=0 b=0 key="Your-API-key" id="Your-System-ID" ws="WebSend [pvoutput.org]" et=0 p=0 vlt=0 >T et=((ENERGY#Total)*1000) p=ENERGY#Power vlt=ENERGY#Voltage ; every 5 minutes if upsecs%300==0 and b==0 then b=1 y=sb(tstamp 0 4) m=sb(tstamp 5 2) d=sb(tstamp 8 2) =>%ws%/service/r2/addstatus.jsp?key=%key%&sid=%id%&d=%1.0(y)%%2.0(m)%%2.0(d)%&t=%1(sb(tstamp 11 5))%&v1=%s(2.0et)%&v2=%s(2.0p)%&v6=%s(2.0vlt)%&c1=2 else b=0 endif
@ThinkPad Denk dat zoiets er wel voor moet zorgen dat hij niet twee keer getriggerd kan worden doordat hij snel genoeg (aka, binnen een seconde) weer loopt. Weet alleen niet of de variabele static zijn dus nog hun waarde hebben de volgende loop? Of is daarvoor een "permanent variable" voor nodig?
Ik heb ook geprobeerd met een timer die op 300 staat en die ik elke seconde met -1 verlaag. Maar ik zie via een print dat de -1 actie alsnog 2x per seconde gedaan wordt. Heel accuraat is die methode dus ook niet

[ Voor 160% gewijzigd door ThinkPad op 16-03-2023 15:09 ]
Verwachting is dat dit niets meer post:
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
| >D 42 ;long string required for key y=0 m=0 d=0 b=1 key="Your-API-key" id="Your-System-ID" ws="WebSend [pvoutput.org]" et=0 p=0 vlt=0 >T et=((ENERGY#Total)*1000) p=ENERGY#Power vlt=ENERGY#Voltage ; every 5 minutes if upsecs%300==0 and b==0 then b=1 y=sb(tstamp 0 4) m=sb(tstamp 5 2) d=sb(tstamp 8 2) =>%ws%/service/r2/addstatus.jsp?key=%key%&sid=%id%&d=%1.0(y)%%2.0(m)%%2.0(d)%&t=%1(sb(tstamp 11 5))%&v1=%s(2.0et)%&v2=%s(2.0p)%&v6=%s(2.0vlt)%&c1=2 else b=0 endif |
En om permanent variable te doen:
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
| >D 42 ;long string required for key y=0 m=0 d=0 p:b=0 key="Your-API-key" id="Your-System-ID" ws="WebSend [pvoutput.org]" et=0 p=0 vlt=0 >T et=((ENERGY#Total)*1000) p=ENERGY#Power vlt=ENERGY#Voltage ; every 5 minutes if upsecs%300==0 and b==0 then b=1 y=sb(tstamp 0 4) m=sb(tstamp 5 2) d=sb(tstamp 8 2) =>%ws%/service/r2/addstatus.jsp?key=%key%&sid=%id%&d=%1.0(y)%%2.0(m)%%2.0(d)%&t=%1(sb(tstamp 11 5))%&v1=%s(2.0et)%&v2=%s(2.0p)%&v6=%s(2.0vlt)%&c1=2 else b=0 endif |
En nu ik zit te lezen, is het niet makkelijker het van >T naar >S te verplaatsen, dat wordt überhaupt maar 1x per seconde doorlopen.
Uiteindelijk bleek dit de oplossingSeptillion schreef op donderdag 16 maart 2023 @ 15:18:
[...]
En nu ik zit te lezen, is het niet makkelijker het van >T naar >S te verplaatsen, dat wordt überhaupt maar 1x per seconde doorlopen.
Ik moest overigens wel de ENERGY variabelen nog onder >T houden, anders kende hij ze niet. Heb het originele script bijgewerkt: ThinkPad in "Datalogging: PV systemen"
[ Voor 4% gewijzigd door ThinkPad op 16-03-2023 16:40 ]
Ik heb hele simpele sketch gemaakt met daarin alleen de SwSerial die de inkomende data 1 op 1 doorstuurt en 1 pin hoog zet.
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
| #include <SoftwareSerial.h> #define D7 (5) //Gnd for display SoftwareSerial swSer (4, 12); void setup() { //HW serial Serial.begin(115200); //SW serial swSer.begin(115200); Serial.println(""); Serial.println("Reset cause:"); Serial.println(ESP.getResetInfo()); pinMode(D7, OUTPUT); digitalWrite(D7, HIGH); } void loop() { while (swSer.available() > 0) { Serial.write(swSer.read()); yield(); } } |
Op de serial monitor zie ik heel veel gibberish voorbij komen, maar ook een reset van de esp.
1
2
3
4
5
6
7
8
9
10
11
| 21:21:23.987 -> 21:21:23.987 -> wdt reset 21:21:23.987 -> load 0x4010f000, len 3584, room 16 21:21:24.007 -> tail 0 21:21:24.007 -> chksum 0xb0 21:21:24.007 -> csum 0xb0 21:21:24.007 -> v2843a5ac 21:21:24.007 -> ~ld 21:21:24.095 -> 21:21:24.095 -> Reset cause: 21:21:24.095 -> Fatal exception:4 flag:1 (Hardware |
Moet ik het dan toch hardwarematig zoeken? Ik heb al meerdere eps8266's geprobeerd.
Gebruik je van alles de laatste versie? Dus Arduino, board def en SoftSerial? Nu moet ik zeggen dat ik nog ben blijven hangen bij Arduino 1.8.13 maar goed, dat zou je ook kunnen proberen.
Andere kant zou ik eens naar de voeding kijken, hoe voedt je de boel nu? Is het een losse ESP of een module zoals een WeMos?
Naast de voeding die septillion al noemde zou ik ook gaan denken aan het koffiezetapparaat. Komt daar wel geldige seriële data uit? Hoe zeker weet je dat het 115200 baud, 8N1 is? Misschien geïnverteerd?
Aan de software kant kan je nog een paar dingen proberen:
- naast de yield ook een expliciete reset van de wdt met ESP.wdtFeed();
- data sneller naar je computer doorsturen, bijv dubbele snelheid
- puur om te testen, data helemaal niet doorsturen
Wat zie je overigens net voor de wdt reset op de seriele monitor. Is die echt 8 seconde stil?
De hardwarematige setup is gelijk gebleven. Dus het display hangt eraan een functioneert. Daarmee spuugt ie dus ook constant data uit (status-update requests). En dan krijg ik dus inderdaad meerdere keren spontaan de reboot
Ik zat nog op 1.8.9 maar heb zojuist alles bijgewerkt naar de laatste versie. Dus Arduino 2.0.4 en alle libraries bijgewerkt, helaas geen verschil.
Voeding is parasitair, dus voeding vanaf het main body op de vcc. Ik heb ook al eens een extra usb adapter aangesloten voor extra voeding, maar dat is het ook niet.
@Albert_x
Nee, als ik de ruwe data voorbij zie komen in de serial monitor zie ik alleen maar gibberisch. Maar in de daadwerkelijke sketch wordt de ontvangen input omgezet. Alleen begrijp ik zelf niet zo goed wat daar precies gebeurt. Alleen dat het daarna een voor mij 'leesbare code' oplevert. De ontvangen serial data van het display wordt dan in een char 'gedrukt'
1
2
3
| char b = Serial.read(); sprintf(&serInCommand[serInIdx], "%02x", b); serInIdx += 2; |
Dit is de request die het beeldscherm maakt om een nieuwe status op te vragen.
1
| byte requestInfo[] = {0xD5, 0x55, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x14}; |
Maar dat staat los van de reset lijkt me. In mijn simpele test sketch werkt de bediening van het koffieapparaat wel. Dus de ontvangen data wordt netjes doorgestuurd naar de main van het apparaat. In mijn daadwerkelijke sketch werkt het allemaal ook. Dus ik kan daar de status uitlezen en het apparaat bedienen. Alleen de esp8266 reset zich dus op onregelmatige momenten. Hij kan het dus ook prima langere tijd (dus ruim langer dan 8 seconden, eerder 20-200 seconden) volhouden.
edit: ik kan dus niet precies triggeren of voorspellen wanneer de esp8266 zich reset. Dat lijkt vooralsnog vrij random. Dat kan kort zijn maar ook wat langere met daarin veel input (dus te verwerken data).
edit2:
1. Dat zal ik nog eens meenemen. > Getest: help niet helaas.Albert_x schreef op donderdag 16 maart 2023 @ 22:57:
@bartbh ZIe je behalve gibberish ook wel eens geldige data voorbijkomen?
Aan de software kant kan je nog een paar dingen proberen:
1. naast de yield ook een expliciete reset van de wdt met ESP.wdtFeed();
2. data sneller naar je computer doorsturen, bijv dubbele snelheid
3. puur om te testen, data helemaal niet doorsturen
2. Volgens mij kan ik dat niet veranderen, ik zit vast aan de 115200 van het display<>body vast.
3. Dat kan inderdaad ook nog.
[ Voor 18% gewijzigd door bartbh op 17-03-2023 00:24 ]
Iets met restore_mode toevoegen lost dit echter niet op:
1
2
3
4
5
6
| - platform: gpio id: relay inverted: true restore_mode: RESTORE_DEFAULT_OFF name: ${display_name} Chime pin: GPIO0 |
Iemand dit klikken van de relay bij een reboot wel succesvol kunnen voorkomen?
Zit er een pullup op GPIO0? want op die pin zit dacht ik ook de flash button.JBS schreef op vrijdag 17 maart 2023 @ 11:40:
Conform deze opzet heb ik al wat jaren m'n domme deurbel slim gemaakt. Dat werkt perfect. Wanneer de ESP echter geen verbinding kan maken (dat gebeurde toevallig van de week tijdens een, gelukkig zeldzaam issue, met de verbinding, gaat ie periodiek herstarten. Prima, maar de relay schakelt een fractie van een seconde tijdens deze reboot, wat een korte rinkel van de deurbel gong betekent.
Iets met restore_mode toevoegen lost dit echter niet op:
YAML:
1 2 3 4 5 6 - platform: gpio id: relay inverted: true restore_mode: RESTORE_DEFAULT_OFF name: ${display_name} Chime pin: GPIO0
Iemand dit klikken van de relay bij een reboot wel succesvol kunnen voorkomen?
Dus misschien kan je het op een andere GPIO testen?
Doelde dus niet of hij gelijk gebleven is of niet maar waar hij uit bestaat. Is het een ESP module incl spanningsregeling of een losse ESP? Neem even aan een module als een WeMos?bartbh schreef op donderdag 16 maart 2023 @ 23:54:
@Septillion
De hardwarematige setup is gelijk gebleven. Dus het display hangt eraan een functioneert. Daarmee spuugt ie dus ook constant data uit (status-update requests). En dan krijg ik dus inderdaad meerdere keren spontaan de reboot
Belangrijkste mis ik dan nog in het rijtje, de board definities, die doen het wekelijke compilen. Alle versies echt benoemen is altijd handig als mensen het ook willen testen.Ik zat nog op 1.8.9 maar heb zojuist alles bijgewerkt naar de laatste versie. Dus Arduino 2.0.4 en alle libraries bijgewerkt, helaas geen verschil.
"Gibberisch" lijkt me normaal, de communicatie is geen ASCII maar gewoon geoptimaliseerde datapakketjes. Maar zie je met de simpele sketch ook werkelijk de rest ("Reset cause: " over de serial) voorbij komen spontaan? Je post het namelijk maar een enkele keer.
En met de simpele sketch, wat gebruik je dan op de PC? Dat kan namelijk ook een reset geven. Net als dat het hebben verbonden van een USB kabel meedoet met de voedingsspanning. Wil je dat niet zal je even met een losse USB-Serial adapter mee moeten luisteren.
Enige wat ik me dan kan bedenken is dat ESPhome de pinMode() en digitalWrite() (on in Arduino verkeerdom doet bij inverted. Dan zou je dit gedrag ook moeten hebben op een andere GPIO. Door de complexe opzet van ESPhome alleen geeeeen idee of het Dat zou helaas wel betekenen dat het niet is op te lossen voor een active low relais module.
[ Voor 145% gewijzigd door ThinkPad op 23-03-2023 15:33 ]
https://www.tinytronics.n...fi/wemos-s2-mini-esp32-s2
de BME680 Bsec werkend tekrijgen
https://esphome.io/components/sensor/bme680_bsec.html
als hij hem compiled krijg ik een foutmelding die ik niet begrijp
HARDWARE: ESP32S2 240MHz, 320KB RAM, 4MB Flash
- toolchain-riscv32-esp @ 8.4.0+2021r2-patch3
- toolchain-xtensa-esp32s2 @ 8.4.0+2021r2-patch3
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
Dependency Graph
|-- AsyncTCP-esphome @ 1.2.2
|-- WiFi @ 2.0.0
|-- FS @ 2.0.0
|-- Update @ 2.0.0
|-- ESPAsyncWebServer-esphome @ 2.1.0
| |-- AsyncTCP-esphome @ 1.2.2
|-- DNSServer @ 2.0.0
|-- ESPmDNS @ 2.0.0
|-- noise-c @ 0.1.4
| |-- libsodium @ 1.10018.1
|-- Wire @ 2.0.0
|-- ArduinoJson @ 6.18.5
|-- WiFiClientSecure @ 2.0.0
|-- HTTPClient @ 2.0.0
|-- SPI @ 2.0.0
|-- BSEC Software Library @ 1.6.1480
Compiling /data/radar-computer-kamer/.pioenvs/radar-computer-kamer/src/main.cpp.o
Linking /data/radar-computer-kamer/.pioenvs/radar-computer-kamer/firmware.elf
/data/cache/platformio/packages/toolchain-xtensa-esp32s2/bin/../lib/gcc/xtensa-esp32s2-elf/8.4.0/../../../../xtensa-esp32s2-elf/bin/ld: cannot find -lalgobsec
collect2: error: ld returned 1 exit status
*** [/data/radar-computer-kamer/.pioenvs/radar-computer-kamer/firmware.elf] Error 1
========================== [FAILED] Took 5.84 seconds ==========================
@Septillion heb nu pas tijd gehad om er eens naar te kijken. Even jouw debug-code toegevoegd, maar:Septillion schreef op woensdag 8 maart 2023 @ 16:31:
@vanaalten Mijn C++ is wat roestig maar volgens mij kan volgende je gigantisch in de problemen helpen:
C++:
1 2 3 4 5 void udpSendMessage(String msg) { //alloc buffer space uint8_t bufsize = msg.length()+1; uint8_t buffer[bufsize]; msg.getBytes(buffer, bufsize);
Zo ver ik weet moeten alle var grotes bekend zijn tijdens compilen, ook die van local vars. Anders moet je malloc() en free() gebruiken (en daar de kennis van hebben!). Print voor de grap maar eens de grote van buffer, denk niet dat die verandert
C++:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 void udpSendMessage(String msg) { int tmp1 = 0; int tmp2 = 0; int tmp3 = 0; //alloc buffer space uint8_t bufsize = msg.length()+1; uint8_t buffer[bufsize]; msg.getBytes(buffer, bufsize); udp.beginPacket(udpAddress, udpPort); udp.write(buffer, bufsize-1); //skip trailing zero. udp.endPacket(); #ifdef DEBUG Serial.println("Message sent:"); Serial.println(msg); Serial.print("sizeof buffer: "); Serial.println(sizeof(buffer)); #endif }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| Sending message Message sent: {"id":"ztatz_dt","version":1.0,"t_unit":"C","t_in_avg":21.7,"t_out_avg":0.0,"t_in":21.688,"t_out":0.0,"seq":8} sizeof buffer: 111 Sending message Message sent: {"id":"ztatz_dt","version":1.0,"t_unit":"C","t_in_avg":21.7,"t_out_avg":0.0,"t_in":21.688,"t_out":0.0,"seq":9} sizeof buffer: 111 Sending message Message sent: {"id":"ztatz_dt","version":1.0,"t_unit":"C","t_in_avg":21.7,"t_out_avg":0.0,"t_in":21.625,"t_out":0.0,"seq":10} sizeof buffer: 112 Sending message Message sent: {"id":"ztatz_dt","version":1.0,"t_unit":"C","t_in_avg":21.7,"t_out_avg":0.0,"t_in":21.625,"t_out":0.0,"seq":11} sizeof buffer: 112 |
...lijkt er toch wel op dat er dynamisch een buffer gecreëerd wordt... toch?
Desondanks even wat zitten proberen - ik vermoed dat mijn C++ kennis nog een heel stuk slechter en roestiger is dan het jouwe - en de volgende code er voor in de plaats gedaan:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| void udpSendMessage(String msg) { uint8_t *buffer; //alloc buffer space uint8_t bufsize = msg.length()+1; buffer = (uint8_t *)malloc(sizeof(uint8_t) * bufsize); if (buffer) { msg.getBytes(buffer, bufsize); udp.beginPacket(udpAddress, udpPort); udp.write(buffer, bufsize-1); //skip trailing zero. udp.endPacket(); #ifdef DEBUG Serial.println("Message sent:"); Serial.println(msg); Serial.println("sizeof buffer: "); Serial.println(sizeof(buffer)); #endif free(buffer); } } |
...en dat werkt ook. Gek genoeg. Want, voorheen was 'buffer' de daadwerkelijke buffer en nu is het een pointer naar de buffer - maar de udp.write functie aanroep heb ik verder niet veranderd.
Opmerkelijk. Maar goed, beide stukken code - de originele en m'n gepruts van nu - lijken dus goed te werken.
[ Voor 20% gewijzigd door vanaalten op 25-03-2023 20:20 ]
Er schijnt een bug in de bsec bieb te zitten. Zie Error on link process - cannot find -lalgobsecvonkkie schreef op dinsdag 21 maart 2023 @ 17:05:
Hai ik probeer op een esp32 s2 mini
https://www.tinytronics.n...fi/wemos-s2-mini-esp32-s2
de BME680 Bsec werkend tekrijgen
https://esphome.io/components/sensor/bme680_bsec.html
als hij hem compiled krijg ik een foutmelding die ik niet begrijp
HARDWARE: ESP32S2 240MHz, 320KB RAM, 4MB Flash
- toolchain-riscv32-esp @ 8.4.0+2021r2-patch3
- toolchain-xtensa-esp32s2 @ 8.4.0+2021r2-patch3
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
Dependency Graph
|-- AsyncTCP-esphome @ 1.2.2
|-- WiFi @ 2.0.0
|-- FS @ 2.0.0
|-- Update @ 2.0.0
|-- ESPAsyncWebServer-esphome @ 2.1.0
| |-- AsyncTCP-esphome @ 1.2.2
|-- DNSServer @ 2.0.0
|-- ESPmDNS @ 2.0.0
|-- noise-c @ 0.1.4
| |-- libsodium @ 1.10018.1
|-- Wire @ 2.0.0
|-- ArduinoJson @ 6.18.5
|-- WiFiClientSecure @ 2.0.0
|-- HTTPClient @ 2.0.0
|-- SPI @ 2.0.0
|-- BSEC Software Library @ 1.6.1480
Compiling /data/radar-computer-kamer/.pioenvs/radar-computer-kamer/src/main.cpp.o
Linking /data/radar-computer-kamer/.pioenvs/radar-computer-kamer/firmware.elf
/data/cache/platformio/packages/toolchain-xtensa-esp32s2/bin/../lib/gcc/xtensa-esp32s2-elf/8.4.0/../../../../xtensa-esp32s2-elf/bin/ld: cannot find -lalgobsec
collect2: error: ld returned 1 exit status
*** [/data/radar-computer-kamer/.pioenvs/radar-computer-kamer/firmware.elf] Error 1
========================== [FAILED] Took 5.84 seconds ==========================
Daar is al 'omheen' gewerkt om het op te lossen. Maar nog niet door iedereen. Die gebruik maakt van de BSEC Software Library
Hier in huis hangen vijf BME680 ieder gekoppeld aan een esp8266. Via esphome zijn deze ge-flashed. Zonder problemen en worden via ota geupdate.
Even om uit te proberen op een esp32 device in esphome de besec code toegevoegd. Compileren lukt dan. Zonder foutmelding.
ESPHome code
1
2
3
4
5
6
7
8
9
10
| name: bme680esp32board platform: ESP32 board: nodemcu-32s i2c: scan: True bme680_bsec: # i2c address override (default is 0x76) address: 0x77 |
Compile log:
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
| Install bme680esp32board.yaml INFO Reading configuration /config/esphome/bme680esp32board.yaml... WARNING 'bme680esp32board': Using the '_' (underscore) character in the hostname is discouraged as it can cause problems with some DHCP and local name services. For more information, see https://esphome.io/guides/faq.html#why-shouldn-t-i-use-underscores-in-my-device-name INFO Generating C++ source... INFO Compiling app... Processing bme680esp32board (board: nodemcu-32s; framework: arduino; platform: platformio/espressif32 @ 5.2.0) -------------------------------------------------------------------------------- HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch3 LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf Dependency Graph |-- AsyncTCP-esphome @ 1.2.2 |-- WiFi @ 2.0.0 |-- FS @ 2.0.0 |-- Update @ 2.0.0 |-- ESPAsyncWebServer-esphome @ 2.1.0 | |-- AsyncTCP-esphome @ 1.2.2 |-- ESPmDNS @ 2.0.0 |-- noise-c @ 0.1.4 | |-- libsodium @ 1.10018.1 |-- Wire @ 2.0.0 |-- ArduinoJson @ 6.18.5 |-- SPI @ 2.0.0 |-- BSEC Software Library @ 1.6.1480 RAM: [== ] 17.2% (used 56456 bytes from 327680 bytes) Flash: [========= ] 92.6% (used 1698753 bytes from 1835008 bytes) ========================= [SUCCESS] Took 14.86 seconds ========================= INFO Successfully compiled program. INFO Connecting to 10.0.27.177 INFO Uploading /data/bme680esp32board/.pioenvs/bme680esp32board/firmware.bin (1704528 bytes) |
[ Voor 0% gewijzigd door pentode op 26-03-2023 20:55 . Reden: verduidelijking ]
De mens leert. De mensheid niet.
Als ik hier naar google, en dat heb ik behoorlijk uitgebreid gedaan, dan vind ik informatie in twee categoriën:
1. Posts van mensen die dit ook willen maar net als ik niet begrijpen hoe
2. Posts van mensen die luchtig schrijven "gebruik VPN! gebruik MQTT!" zonder in meer detail uit te leggen hoe dan
Weet iemand een wat meer gedetailleerde how-to hoe je een ESPHOME sensor op netwerk A verbindt met een Home Assistant op netwerk B?
Xtool D1 10w laser cutter - IoT moet nooit op internet
Of je moet al iets van een publieke MQTT-server kennen waar de ESP z'n data op kan zetten en je HASS het weer vanaf plukt. Misschien is dit iets, weet zo niet wat de voorwaarden voor het gebruik zijn: https://www.hivemq.com/public-mqtt-broker/
Dit is overigens meer een vraag voor NT (netwerken) dan voor dit subforum.
[ Voor 17% gewijzigd door ThinkPad op 26-03-2023 12:03 ]
De andere route met MQTT houdt in dat je je MQTT-broker thuis(meestal Mosquitto) benaderbaar maakt via internet. Maar het is uit veiligheidsoogpunt vaak niet zo'n lekker plan om gewoon de betreffende poort in je router open te gooien zodat men van buitenaf bij je broker kan komen. Voor de veiligheid kun je dan het beste met een reverse proxy aan de slag gaan, zoals NGINX. Hiervoor zijn veel tutorials te vinden (zoals hoe je NGINX gebruikt om HA veilig te onsluiten).
Het gebruik van een publieke MQTT-server kan ook. Daar heb je geen garantie dat mensen met je data klooien of voor de lol verkeerde data naar je topic sturen. Maar dat maakt je misschien niet zoveel uit met een watermeter.
[ Voor 10% gewijzigd door Gizz op 26-03-2023 12:05 ]
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
dus nu maar een pcb ontworpen en besteld om een wemos d1 mini samen met een BME680 em een GY-30 en de dfrobot sen0359 in de bekende every presence one behuizing teplaatsen
pentode schreef op zondag 26 maart 2023 @ 10:15:
[...]
Er schijnt een bug in de bsec bieb te zitten. Zie Error on link process - cannot find -lalgobsec
Daar is al 'omheen' gewerkt om het op te lossen. Maar nog niet door iedereen. Die gebruik maakt van de BSEC Software Library
Hier in huis hangen vijf BME680 gekoppeld aan een esp8266. Via esphome zijn deze ge-flashed. Zonder problemen en worden via ota geupdate.
Even om uit te proberen op een esp32 device in esphome de besec code toegevoegd. Compileren lukt dan. Zonder foutmelding.
ESPHome code
code:
1 2 3 4 5 6 7 8 9 10 name: bme680esp32board platform: ESP32 board: nodemcu-32s i2c: scan: True bme680_bsec: # i2c address override (default is 0x76) address: 0x77
Compile log:
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 Install bme680esp32board.yaml INFO Reading configuration /config/esphome/bme680esp32board.yaml... WARNING 'bme680esp32board': Using the '_' (underscore) character in the hostname is discouraged as it can cause problems with some DHCP and local name services. For more information, see https://esphome.io/guides/faq.html#why-shouldn-t-i-use-underscores-in-my-device-name INFO Generating C++ source... INFO Compiling app... Processing bme680esp32board (board: nodemcu-32s; framework: arduino; platform: platformio/espressif32 @ 5.2.0) -------------------------------------------------------------------------------- HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch3 LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf Dependency Graph |-- AsyncTCP-esphome @ 1.2.2 |-- WiFi @ 2.0.0 |-- FS @ 2.0.0 |-- Update @ 2.0.0 |-- ESPAsyncWebServer-esphome @ 2.1.0 | |-- AsyncTCP-esphome @ 1.2.2 |-- ESPmDNS @ 2.0.0 |-- noise-c @ 0.1.4 | |-- libsodium @ 1.10018.1 |-- Wire @ 2.0.0 |-- ArduinoJson @ 6.18.5 |-- SPI @ 2.0.0 |-- BSEC Software Library @ 1.6.1480 RAM: [== ] 17.2% (used 56456 bytes from 327680 bytes) Flash: [========= ] 92.6% (used 1698753 bytes from 1835008 bytes) ========================= [SUCCESS] Took 14.86 seconds ========================= INFO Successfully compiled program. INFO Connecting to 10.0.27.177 INFO Uploading /data/bme680esp32board/.pioenvs/bme680esp32board/firmware.bin (1704528 bytes)
@vonkkievonkkie schreef op zondag 26 maart 2023 @ 19:19:
ik heb er al meerdere hangen in huis maar op de esp32 s2 mini gaf hij problemen maar ook de dfrobot sen0359 werkt niet goed samen met de esp32 s2 mini
dus nu maar een pcb ontworpen en besteld om een wemos d1 mini samen met een BME680 em een GY-30 en de dfrobot sen0359 in de bekende every presence one behuizing teplaatsen![]()
![]()
![]()
![]()
![]()
[...]
Voor de S2, S3 en C3 ESP32 modellen schijnt er ook een 'work around' oplossing te zijn. Door gebruik te maken van external_components voor nu.
Zie gitgub: Problem BME680 BSEC with ESP32-S2 En er is gevraag dit toe te voegen aan de ESPHome module.
Directe link
1
2
3
4
| external_components: - source: github://Schluggi/esphome@bsec2 components: - bme680_bsec |
[ Voor 5% gewijzigd door pentode op 26-03-2023 20:33 . Reden: aanvulling ]
De mens leert. De mensheid niet.
Ja, voor deze code:
1
| bme680_bsec: |
Zie voor meer uitleg ESPHome External Components
Ook is het mogelijk bij github de zip te downloaden en dan naar de opgeslagen locatie verwijzen. Ja, ja.
Voor git, github heb je mogelijk credentials oid nodig.
Alleen ik kan de verwijzing niet (meer) vinden?
Zo te zien is het al opgepakt Fix platform restriction for bme680_bsec #4616
Dus nog even geduld tot de volgende ESPHome update.
[ Voor 20% gewijzigd door pentode op 26-03-2023 23:01 . Reden: verbeterd ervoor zetten niet vervangen ]
De mens leert. De mensheid niet.
vonkkie schreef op zondag 26 maart 2023 @ 21:52:
hm als ik dat er voor zet en het bsec weg haal krijg ik alleen maar rode lijnen kennelijk verwijst hij dan niet meer morgen ga ik wel een s verder
1
2
3
4
| external_components: - source: github://Schluggi/esphome@bsec2 components: - bme680_bsec |
Oeps, de code hierboven zet je vóór deze
1
2
3
| bme680_bsec: # i2c address override (default is 0x76) address: 0x77 |
Je voegt het toe. Niet vervangen dus.
Zo ziet het er dan (ongeveer uit)
1
2
3
4
5
6
7
| # https://github.com/Schluggi/esphome/tree/bsec2 external_components: - source: github://Schluggi/esphome@bsec2 components: - bme680_bsec bme680_bsec: |
link op github naar de repo branch Of even geduld hebben. Er wordt aan gewerkt om het op te lossen...
[ Voor 58% gewijzigd door pentode op 26-03-2023 23:30 . Reden: verduidelijking ]
De mens leert. De mensheid niet.
Ipv malloc() zou je als het goed is ook new moeten kunnen gebruiken.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| void udpSendMessage(String msg) { uint8_t *buffer; //alloc buffer space const uint8_t Bufsize = msg.length()+1; buffer = new uint8_t[Bufsize]); if (buffer) { msg.getBytes(buffer, bufsize); udp.beginPacket(udpAddress, udpPort); udp.write(buffer, bufsize-1); //skip trailing zero. udp.endPacket(); #ifdef DEBUG Serial.println("Message sent:"); Serial.println(msg); Serial.println("sizeof buffer: "); Serial.println(sizeof(buffer)); #endif free(buffer); } } |
Overigens lijkt het me logischer om een char array aka een (c-)string te pakken.
En let er op dat String soms tot mooie memory issues kan leiden omdat telkens als hij groter wordt een relocate nodig heeft.
Kan iemand mij vertellen welke ik het beste kan nemen en waarom?

Qua D1-mini's zijn er al jaren heel veel verschillende clones op de markt, regelmatig met ondermaatste 5V->3,3V voeding. Als je het écht zeker wil weten zou ik direct bij Lolin bestellen. De versie met ESP32 kost daar nauwelijks meer.
[ Voor 10% gewijzigd door Gizz op 27-03-2023 15:10 ]
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
Het is voor een ledstrip projectje.. dillema's haha
ESP32-S2 is bedoeld als opvolger van de ESP8266...Mitchelll010 schreef op maandag 27 maart 2023 @ 15:20:
Ja precies, twijfel daarom een beetje...
Het is voor een ledstrip projectje.. dillema's haha
Lolin/wemos S2 mini is pin compatible.
Die D1 v4 heeft een (mini) connector voor I2C, heb je die nodig?
- knip -
Die van mijn plaatje is niet de S2.Raymond P schreef op maandag 27 maart 2023 @ 19:48:
[...]
ESP32-S2 is bedoeld als opvolger van de ESP8266...
Lolin/wemos S2 mini is pin compatible.
Die D1 v4 heeft een (mini) connector voor I2C, heb je die nodig?
Die werken niet lekker samen met WLED.
Maar nee, geen I2C nodig.. vraag me af of er verschil in stabiliteit/wifi ontvangst is.
- knip -
Compiled niet lekker, moet je alles handmatig doen. Gedoe.. en ik ben lui..
Weet niet precies waar het in zit.
Stabiliteit valt of staat met de kwaliteit van de ondersteunende componenten, in de basis zit er geen verschil tussen een 12F en een 12F.
Antenne-design is ook allemaal ongeveer gelijk. Als je een betere dekking wilt kan je kijken naar een 'pro' versie met een aansluiting voor een externe antenne.
- knip -

Heb een conditie toegevoegd dat hij alleen overdag moet uploaden. Anders blijft hij na zonsondergang continu 0 Watt naar PVOutput sturen, beetje onnodig en vervuilt ook de data omdat hij het (lichte) sluipverbruik van de omvormers als opwek ziet.
Ik heb het volgende (deel van) script:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| >S ;every 5 minutes if upsecs%300==0 then print Time is %time% Sunrise is at %sunrise%, sunset is at %sunset%. if time>sunrise and time<sunset then print Now uploading data to PVOutput... y=sb(tstamp 0 4) m=sb(tstamp 5 2) d=sb(tstamp 8 2) =>%ws%/service/r2/addstatus.jsp?key=%key%&sid=%id%&d=%1.0(y)%%2.0(m)%%2.0(d)%&t=%1(sb(tstamp 11 5))%&v1=%s(2.0et)%&v2=%s(2.0p)%&v6=%s(2.0vlt)%&c1=2 else print Stop uploading since it is evening/night. endif endif |
Het vreemde is, dit werkt bij zonsopkomst prima: hij begint zoals het hoort pas met uploaden als de tijd > sunrise is. Maar hij stopt niet bij zonsondergang zoals zou moeten (time<sunset), hij gaat de hele avond door, tot 0:00. Ik snap niet wat er misgaat
"13:58:20.424 Time is 838.00 Sunrise is at 422.00, sunset is at 1210.00."
[ Voor 13% gewijzigd door ThinkPad op 03-04-2023 14:23 ]
of zelfs:if (time>sunrise and time<sunset)
if ((time>sunrise) and (time<sunset))
Edit: ochtend gaat ook goed. Opgelost dus
[ Voor 6% gewijzigd door ThinkPad op 04-04-2023 07:12 ]
De sensor, ik moet hem nog even in de beits zetten, en ik heb de optie nog iets van een logo of tekst in het rechter deel van het frontje te laseren:
/f/image/UxijLYPWA8UbZnf2eVnSvN7m.png?f=fotoalbum_medium)
De internals:
/f/image/BvBlb3KIXWdNboqf8BfvUpDx.png?f=fotoalbum_medium)
En zo laat ik het op dit moment zien in Home Assistant:
/f/image/bEsXGeq958luyvgvymNNa6cu.png?f=fotoalbum_medium)
Ik heb er nu twee, ik wil er in totaal vijf plaatsen, woonkamer, werkkamer en de drie slaapkamers. Ik denk dat er meer geventileerd moet gaan worden en misschien kan ik de temperatuurmeting in de toekomst gebruiken om verwarming/koeling te schakelen vanuit HA.
Xtool D1 10w laser cutter - IoT moet nooit op internet
M.i. is de BME280 totaal niet geschikt voor die toepassing. Waar 'ie wel héél goed in is is het detecteren van (minuscule) veranderingen in luchtdruk en temperatuur. (je kunt letterlijk meten of iemand langsloopt / stil staat)
De sensor loopt ook best heet, relatieve luchtvochtigheid heb je dus weinig aan tenzij je 'm een accurate temperatuur feed.
Je hebt nog zat ruimte en pins over, zou je geen SHT4x en/of DS18B20 erbij plakken?
- knip -
Ik heb de BME280 eigenlijk gebruikt omdat dat dat is wat ik hebRaymond P schreef op dinsdag 4 april 2023 @ 10:26:
@JeroenH Ziet er strak uit met zo'n laser.
M.i. is de BME280 totaal niet geschikt voor die toepassing. Waar 'ie wel héél goed in is is het detecteren van (minuscule) veranderingen in luchtdruk en temperatuur. (je kunt letterlijk meten of iemand langsloopt / stil staat)
De sensor loopt ook best heet, relatieve luchtvochtigheid heb je dus weinig aan tenzij je 'm een accurate temperatuur feed.
Je hebt nog zat ruimte en pins over, zou je geen SHT4x en/of DS18B20 erbij plakken?
/f/image/vzJtW9bAWkNFP3LoEaRlEkVD.png?f=fotoalbum_medium)
(dit is een eerdere versie met de ESP32 onderin de behuizing)
Maar ik zou dus beter af zijn met één van die sensoren die je noemt? Daar moet ik maar eens induiken dan
Xtool D1 10w laser cutter - IoT moet nooit op internet
En dan de sensor onderin de behuizing en de CPU bovenin (want warmte gaat omhoog enzo...)
[ Voor 35% gewijzigd door ThinkPad op 04-04-2023 10:40 ]
Ziet er mooi uit. Heb zelf de 'all in one' BME680 gebruikt. En geen aparte CO₂ sensor. Wil dat wel nog gaan doen. Nu is het een pseudo accuraat huis tuin en keuken CO₂ meting. 'Good enough for Australia (Not Austria)' zou Dave van EEVblog zeggen ;-PJeroenH schreef op dinsdag 4 april 2023 @ 09:53:
Ik wil de luchtkwaliteit in een aantal kamers in onze woning gaan monitoren, om comfort- en gezondheidsredenen. Ik heb daarvoor een standaard sensortje gemaakt, met een MH-Z19b CO2 sensor, en een BME280 temperatuur/luchtvochtigheid/luchtdruksensor, gekoppeld aan een ESP32 die ESPHOME draait. Het heeft een paar iteraties gekost voordat ik een behuizing had waarbij de warmte van de ESP32 de BME280 niet meer zo sterk beïnvloedde.
De sensor, ik moet hem nog even in de beits zetten, en ik heb de optie nog iets van een logo of tekst in het rechter deel van het frontje te laseren:
[Afbeelding]
De internals:
[Afbeelding]
En zo laat ik het op dit moment zien in Home Assistant:
[Afbeelding]
Ik heb er nu twee, ik wil er in totaal vijf paatsen, woonkamer, werkkamer en de drie slaapkamers. Ik denk dat er meer geventileerd moet gaan worden en misschien kan ik de temperatuurmeting in de toekomst gebruiken om verwarming/koeling te schakelen vanuit HA.
En ook een IAQ (iaq uitleg in het Engels BME with Arduino) waarde grid card in HA gemaakt.
Dissipatie daar heb ik ook last van gehad. Bij het plaatsen van een Lanbon display. Dus de BMEx of andere temperatuur sensors ed zo veel mogelijk uit de warmte invloedsfeer van de electronica componenten halen.
Dat geldt ook in zekere mate voor licht sensors.
Hoe heb je het kastje gemaakt. Is dat met een laser cutter gedaan.
Voorbeeld IAQ card:
/f/image/3ad9x6O68sr6d60gi1J8kHbp.png?f=fotoalbum_large)
[ Voor 4% gewijzigd door pentode op 04-04-2023 11:20 . Reden: verduidelijking ]
De mens leert. De mensheid niet.
Poe... geen idee. Vast welThinkPad schreef op dinsdag 4 april 2023 @ 10:37:
Kun je de BME280 niet alleen aanzetten bij een meting (eens per 5 min. lijkt mij vaak genoeg voor temp/hum) en daarna weer uit, om zelfopwarming te voorkomen? Voeding van de BME280 via een GPIO pin. En anders met een extra transistor
Zie de tekst onder de warmtebeeldfotoEn dan de sensor onderin de behuizing en de CPU bovenin (want warmte gaat omhoog enzo...)
Nice! De goedkope NDIR-sensoren zoals de MH-Z19 die ik gebruik zijn ook maar nét nauwkeurig genoeg om iets over de CO2-concentratie te kunnen zeggen. Metingen aan gasmengsels zijn gewoon niet zo makkelijk.pentode schreef op dinsdag 4 april 2023 @ 10:44:
Ziet er mooi uit. Heb zelf de 'all in one' BME680 gebruikt. En geen aparte CO₂ sensor. Wil dat wel nog gaan doen. Nu is het een pseudo accuraat huis tuin en keuken CO₂ meting. 'Good enough for Australia (Not Austria)' zou Dave van EEVblog zeggen ;-P
En ook een IAQ waarde grid card gemaakt.
Ja, zie mijn signature. Als iemand de lightburn file wil hebben dan post ik hem wel.Hoe heb je het kastje gemaakt. Is dat met een laser cutter gedaan.
[ Voor 44% gewijzigd door JeroenH op 04-04-2023 10:51 ]
Xtool D1 10w laser cutter - IoT moet nooit op internet
Een harde powertoggle werkt iig averechts.
Maar dan nog is 'ie niet geschikt om kamertemperatuur te meten.
@JeroenH Yes, daar doe je goed aan. De BME280 is zeker niet nutteloos hoor, je kunt er bijvoorbeeld tocht mee meten en open raam detectie mee doen.
Als m'n vriendin een warme douche heeft genomen en door het huis loopt op een half metertje afstand van die sensors dan is dat zichtbaar (met voldoende sampling). Voor zulke toepassingen is die sensor ook bedoeld.
Zelf gebruik ik een combi van SHT41 en DS18B20, plus hier en daar een BMP280 (want relHum zit ver van de waarheid).
- knip -
- ESP8266 ESP-12 ESP-12F CH340G CH340 V2 Usb Wemos D1 Mini Pro
- Senseair S8
- Soldeerbout
Lijkt me eerst handig om op een beardbord aan de slag te gaan, welke zouden jullie aanraden? En welke chips/apparatuur heb ik nog meer nodig om hiermee te starten?
Omdat ik best een stel BME280's heb liggen heb ik eens een paar dagen in een Excel-document de meetwaarden opgeschreven, samen met wat de Itho kamerthermostaat op dat moment aangaf. Dat ziet er in een grafiek zo uit:Raymond P schreef op dinsdag 4 april 2023 @ 10:53:
@JeroenH Yes, daar doe je goed aan. De BME280 is zeker niet nutteloos hoor, je kunt er bijvoorbeeld tocht mee meten en open raam detectie mee doen.

Behalve één outlier is daţ verband behoorlijk linear. Ik heb in de yaml van de ESPHOME een offset filter van 0,4C geplaatst, en als ik nu kijk zitten de Itho en de ESPHOME 90% van de tijd binnen 0,1C van elkaar, en een enkele keer 0,2C. Dat lijkt me voor hobby-materiaal helemaal niet gek
Ik houd het dus voorlopig toch maar bij BME280's, dat lijkt voor mijn doeleinden prima te werken.
Verder wil ik de airco vanuit HA kunnen bedienen, dus heb ik een ESPHOME IR transmitter gemaakt:

De techniek bestaat uit een ESP32 die ESPHOME draait, een bordje met twee IR-LEDs en een bordje met een IR-ontvanger zodat je ook commando's van een afstandsbediening in kunt leren. Dat is met ESPHOME heel simpel te bouwen en werkte de eerste keer
Xtool D1 10w laser cutter - IoT moet nooit op internet
Doe je dat direct in een koudestroom of looproute dan kan je de issues gaan ervaren waar ik tegenaan ben gelopen:
:fill(white):strip_exif()/f/image/lSvd85s8v29nMOTsBpPauoHE.png?f=user_large)
Rond 17:00 is er even wat extra verse lucht naar binnen gehaald. Zou ik enkel op de BME280 sturen dan had m'n CV hard gaan draaien.
Wellicht dat het zo wat duidelijker is wat ik bedoel met het meten van luchtstromen. De BME hangt waar de kamerthermostaat hing, bij de sht, scd en groene ds18.
N.b. M'n vriendin is thuis (covid), dus het is wat warmer dan normaal.

De sdcx meet momenteel vooral de warmte van de sht41 die ik erbij geprikt heb, dat moet ik nog fixen.
- knip -
https://a.aliexpress.com/_mLw3xmc
Nu zou ik daar ook graag een mooie transparante behuizing bij willen hebben.
De vraag: Waar halen jullie, of hoe maken jullie, doorgaans jullie "afmonteer" boxen? Ik zie bij die relay module bijvoorbeeld de afmetingen van de print staan, maar de afstand tussen de schroef gaatjes zie ik niet vermeld staan.
Ik zou verwachten dat ik een doosje zou moeten kopen weer dan ook de schroef terminals op de juiste plekken zitten, zodat ik mijn printje vast kan schroeven in de doos.
Overigens kan het zijn dat ik enkel een relay module koop, gezien ik de esp32 hier al heb liggen. Dus dat zou dan ook weer een andere afstand tussen de verschillende schroef gaten betekenen.
M.a.w.: waar is die website / webpagina met een groot assortiment aan betaalbare doosjes met mega veel verschillende schroef afstanden etc?
PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?
Ik gebruik deze: https://aliexpress.com/item/4000999069820.htmlTanuki schreef op zaterdag 8 april 2023 @ 22:32:
Niet helemaal een coding vraag, maar eigenlijk een vraag voor de fase erna: Ik ben voornemens iets te bestellen als dit: "DC5-30V Power Supply ESP32-WROOM-32E WiFi BLE Module 8-channels Relay ESP32-WROOM Secondary Development Board for Arduino"
https://a.aliexpress.com/_mLw3xmc
Nu zou ik daar ook graag een mooie transparante behuizing bij willen hebben.Hij gaat dienen als vloer verwarming controller (kraantjes open en dicht draaien), dus het leek me wel mooi om niet zomaar een los printplaatje bij de verdeler te leggen / hangen, maar netjes een project case te gebruiken ervoor.
Er komen dan ook nog flink wat ds18b20 sensoren en uiteraard de kabels voor de servomotoren bij: een flinke bos kabels.
De vraag: Waar halen jullie, of hoe maken jullie, doorgaans jullie "afmonteer" boxen? Ik zie bij die relay module bijvoorbeeld de afmetingen van de print staan, maar de afstand tussen de schroef gaatjes zie ik niet vermeld staan.
Ik zou verwachten dat ik een doosje zou moeten kopen weer dan ook de schroef terminals op de juiste plekken zitten, zodat ik mijn printje vast kan schroeven in de doos.
Overigens kan het zijn dat ik enkel een relay module koop, gezien ik de esp32 hier al heb liggen. Dus dat zou dan ook weer een andere afstand tussen de verschillende schroef gaten betekenen.
M.a.w.: waar is die website / webpagina met een groot assortiment aan betaalbare doosjes met mega veel verschillende schroef afstanden etc?
Compleet, wel duurder, werkt prima. (heeft wifi, 8 ingangen)
[ Voor 8% gewijzigd door _ferry_ op 09-04-2023 08:44 ]
Bijvoorbeeld: deze
ABB maakt veel doosjes, (spat)waterdicht lijkt mij op zijn minst wel wenselijk. Zeker als je met 230V gaat spelen.
Wil je voor de superstrakke installatie gaan dan kun je ook kijken naar een verdeel of stuurkast.
Zo veel duurder hoeft dat namelijk niet te zijn (voorbeeld).
Het voordeel is dat DIN rail mount dan dichtbij is en je ineens minder hoeft te klooien, want relays mounten op een DIN plate wordt vaak gedaan. Shelly en Sonoff doen daar ook aan mee.
Het nadeel is dat het wat meer ruimte in beslag neemt.
Kleine doosjes met een ESPtje en een sensor of twee zijn leuk maar voor het serieuzere werk gebruik je imo gepaste doosjes.
- knip -
Maar ik wil met DS18B20 temperatuur sensoren en een esp32 een digitaal afleesbare tempratuurmeter maken.
maar ik weet niet goed hoe en krijg mijn esp32 ook niet gevonden in mijn IDE programma van arduino ik heb wel de drivers al geïnstalleerd kan iemand mij verder helpen?
Welk display heb je er bij? Wellicht heb je iets aan mijn post:TECHboyy schreef op zondag 9 april 2023 @ 23:04:
hoi ik ben nog vrij nieuw in deze omgeving,
Maar ik wil met DS18B20 temperatuur sensoren en een esp32 een digitaal afleesbare tempratuurmeter maken.
maar ik weet niet goed hoe
vanaalten in "Het grote ESP topic"
Mja, herkenbaar en het opstarten met een ESP en ArduinoIDE vond ik ook wat vaag en trial&error.en krijg mijn esp32 ook niet gevonden in mijn IDE programma van arduino ik heb wel de drivers al geïnstalleerd kan iemand mij verder helpen?
Hier heb ik "NodeMCU 1.0 (ESP-12E Module) COM3" geselecteerd en gecombineerd met de juiste USB poort werkt dat. Bij mij.
dit is de display : Otronic Mini OLED display wit 0.96 inch 128x64 I2Cvanaalten schreef op maandag 10 april 2023 @ 10:30:
[...]
Welk display heb je er bij? Wellicht heb je iets aan mijn post:
vanaalten in "Het grote ESP topic"
[...]
Mja, herkenbaar en het opstarten met een ESP en ArduinoIDE vond ik ook wat vaag en trial&error.
Hier heb ik "NodeMCU 1.0 (ESP-12E Module) COM3" geselecteerd en gecombineerd met de juiste USB poort werkt dat. Bij mij.
ik heb wat info gevonden gehad op deze sites maar helaas nog zonder succes :
https://randomnerdtutoria...-temperature-arduino-ide/
https://randomnerdtutorials.com/getting-started-with-esp32/
Het gaat er om welke controller er gebruikt wordt - en dat kan ik zo snel nergens terugvinden. Echter gok ik dat het gewoon een controller zal zijn die ondersteund wordt door u8g2-lib.TECHboyy schreef op maandag 10 april 2023 @ 11:32:
[...]
dit is de display : Otronic Mini OLED display wit 0.96 inch 128x64 I2C
https://github.com/olikraus/u8g2/wiki/u8g2setupcpp
Enkel het I2C adres wordt nog even wat puzzelen.
- knip -
Draait ESPhome al op dus kunnen we over WiFi weer aanpassen zonder al te veel moeite
[ Voor 20% gewijzigd door WoBBeL op 12-04-2023 20:32 ]
ik zou esphome adviseren (zeker als je home assistant hebt) tasmota kan ookTECHboyy schreef op zondag 9 april 2023 @ 23:04:
hoi ik ben nog vrij nieuw in deze omgeving,
Maar ik wil met DS18B20 temperatuur sensoren en een esp32 een digitaal afleesbare tempratuurmeter maken.
maar ik weet niet goed hoe en krijg mijn esp32 ook niet gevonden in mijn IDE programma van arduino ik heb wel de drivers al geïnstalleerd kan iemand mij verder helpen?
let op dat je DS18B20 5v willen en je een weerstand ertussen dient te zetten, terwijl je esp 3,3v werkt.
ook wel handig dat je de juiste (vrij-e) pin selecteerd. bv gpio4 ? met een 4k7 weerstand ertussen
je kan alle temperatuur sensor(s) aan elkaar bundelen alleen je doet er wel verstandig een binnen/buiten connector oid ertussen te maken zodat je case waterdicht blijft. (vocht is niet iets wat je wilt) bv een microjack oid.
deze kan https://randomnerdtutoria...oled-display-arduino-ide/ voor je display alleen zou dit niet beter zijn direct naar je telefoon ipv los schermpje?
in bv tasmota = juiste IP adres in de browser, bij esphome = extra regel "webserver aan" oid in de configuratie.
Ander dingetje is dat je als je een esp32 ergens in verwerkt en uit de buurt van een AP je echt wel een externe antenne oid wilt hebben aan je esp32. (iets met ontvangst)
vso in "Het grote "Zwembad DIY Automatiserings" topic"
DM me als je de Yaml van dit ding wilt voor esphome
Tja vanalles
Op een ESP32 is in principe elke GPIO vrij te gebruiken.
- knip -
Ik ben al even door mijn favoriete Chinese supermarkt aan het klikken geweest, maar ik kom allemaal verschillende sensoren en types tegen. Zijn er hier mensen met ervaring met een relatief betrouwbare oplossing? Naar wat ik lees werkt een hydrostatische sensor het best. Ik wil dit bij voorkeur gebruiken met ESPhome, maar als andere software hiervoor beter geschikt is, dan is dat verder prima.
Ik zit er wel even mee hoe ik moet berekenen hoe veel liter er in de tank zit aangezien het geen nette vierkante bak is. Heeft iemand dit eerder gedaan?
[ Voor 6% gewijzigd door Gizz op 12-04-2023 22:06 ]
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
Ik kan alleen niet voor veel praktijkvoorbeelden vinden van mensen die dit ook gedaan hebben.
je kan een "dual use" systeem gebruiken bv een peilstok in een aparte buis met onderin een stuk schuim (iets wat de stok omhoog duwt, op die stok plak je magneetjes. ernaast zet je in een waterdichte buis om de x cm een hall effect (magneet sensor) ..gastje01 schreef op woensdag 12 april 2023 @ 22:03:
Ik ga een (grote) regenwatertank ingraven in de tuin die ik op mijn beregeningsinstallatie aan ga sluiten. Nu zou ik graag een sensor in die tank hangen om te kunnen zien hoeveel er nog in zit.
Ik ben al even door mijn favoriete Chinese supermarkt aan het klikken geweest, maar ik kom allemaal verschillende sensoren en types tegen. Zijn er hier mensen met ervaring met een relatief betrouwbare oplossing? Naar wat ik lees werkt een hydrostatische sensor het best. Ik wil dit bij voorkeur gebruiken met ESPhome, maar als andere software hiervoor beter geschikt is, dan is dat verder prima.
Ik zit er wel even mee hoe ik moet berekenen hoe veel liter er in de tank zit aangezien het geen nette vierkante bak is. Heeft iemand dit eerder gedaan?
Naarmate de tank vult zal 1 of meerdere sensors een x waarde registeren (stok gaat omhoog) hoe meer sensors iets uitlezen hoe voller de tank. daarnaast heb je ook nog een manuele aflees mogelijkheid als de techniek je in de steek laat.
hoeveel water erin zit ? pff goed meten en opdelen in vierkante blokken daar een volume berekening overheen gooien excel is daar heel goed in.
btw als je ingraaft zorg wel dat je een voor/na filter hebt oid zodat je geen slib onderin je ingegraven ton hebt tzt . en je kan een flowmeter gebruiken om te zien wat erin/eruit gaat bij benadering ..
Dit dus .. vandaar de hall effect oplossing kan wellicht "lastig" zijn om te bouwen maar 1maal werkend is dit ook redelijk "foolproof" te maken ..gastje01 schreef op woensdag 12 april 2023 @ 22:44:
Dan schijn je last te kunnen hebben van reflecties die de metingen beïnvloeden? Ook vraag ik me af hoe goed zo'n sensor tegen water kan. Zo was ik op op een hydrostatische sensor gekomen, die meet hoeveel water er 'boven' de sensor zit, behoorlijk waterdicht dus.
Ik kan alleen niet voor veel praktijkvoorbeelden vinden van mensen die dit ook gedaan hebben.
je kan de uitslag ook verkleinen door een soort "wip" met een verschoven draaipunt maar dat is aan jou.
[ Voor 17% gewijzigd door vso op 12-04-2023 22:50 ]
Tja vanalles