Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

DIY: Itho ventilatie aansturen via 868Mhz transmitter

Pagina: 1 2
Acties:

Onderwerpen


  • mvnieuw
  • Registratie: september 2010
  • Laatst online: 05-10 22:49
Voor de geinteresseerde tweakers onder ons, ik ben bezig om het draadloze protocol te ontrafelen. De hardware heb ik al ontleed en is te vinden op https://diystuff.nl/embedded/itho-rf-protocol/. Ook heb ik de complete unit gedemonteerd en dit is te zie op https://diystuff.nl/diy/vraaggestuurde-ventlatie/.

Volgt er nu een vraag van mij, wie heeft de PWM optie print en kan daarvan in hoge resolutie van beide zijdes een foto maken, waarop ook de componentopdruk te lezen is. Daarme kan ik mijn onderzoek voortzetten naar deze unit.

Tegen de tijd dat ik het protocol werkend heb, dan wil ik graag een keer komen meten bij een afstandsbediening die de "Niet thuis" optie heeft. Ook heb ik interessen in een CO2 meter, deze is in staat om via draadloos een 0-100% signaal door te sturen naar de ecofan.

Uiteindelijke doel is om een dongle te kunnen maken die via Domoticz aangestuurd kan worden. Wie doet er mee?

  • Bas Post
  • Registratie: september 2006
  • Laatst online: 03-11 21:25
quote:
mvnieuw schreef op zondag 13 september 2015 @ 23:21:
Voor de geinteresseerde tweakers onder ons, ik ben bezig om het draadloze protocol te ontrafelen. De hardware heb ik al ontleed en is te vinden op http://diystuff.nl/embedded/itho-rf-protocol/. Ook heb ik de complete unit gedemonteerd en dit is te zie op http://diystuff.nl/diy/vraaggestuurde-ventlatie/.

Volgt er nu een vraag van mij, wie heeft de PWM optie print en kan daarvan in hoge resolutie van beide zijdes een foto maken, waarop ook de componentopdruk te lezen is. Daarme kan ik mijn onderzoek voortzetten naar deze unit.

Tegen de tijd dat ik het protocol werkend heb, dan wil ik graag een keer komen meten bij een afstandsbediening die de "Niet thuis" optie heeft. Ook heb ik interessen in een CO2 meter, deze is in staat om via draadloos een 0-100% signaal door te sturen naar de ecofan.

Uiteindelijke doel is om een dongle te kunnen maken die via Domoticz aangestuurd kan worden. Wie doet er mee?
Super dat je dit doet! Ik ga zeer binnenkort een Itho Ecofan aanschaffen met de PWM print! Zodra ik deze binnen heb, maak ik foto's en contact ik je wel. Tenzij iemand mij voor is natuurlijk! :*)

PS, wat helemaal te gek is, is dat je een NRF905 gebruikt hiervoor, deze worden standaard ondersteund in het "Geek" pakket van Homey, als je de dongle helemaal werkend krijgt, zou dat betekenen dat dit ook direct met Homey werkt!

Bas Post wijzigde deze reactie 14-09-2015 07:48 (8%)

BP on the move!!!


  • mvnieuw
  • Registratie: september 2010
  • Laatst online: 05-10 22:49
quote:
Bas Post schreef op maandag 14 september 2015 @ 07:44:
[...]


Super dat je dit doet! Ik ga zeer binnenkort een Itho Ecofan aanschaffen met de PWM print! Zodra ik deze binnen heb, maak ik foto's en contact ik je wel. Tenzij iemand mij voor is natuurlijk! :*)

PS, wat helemaal te gek is, is dat je een NRF905 gebruikt hiervoor, deze worden standaard ondersteund in het "Geek" pakket van Homey, als je de dongle helemaal werkend krijgt, zou dat betekenen dat dit ook direct met Homey werkt!
Ik heb even naar de Homey gekeken, en die heb ik al eens langs zien komen. Hij ondersteunt 433 Mhz. Ik weet niet in hoeverre de software aangepast kan worden zodat ie ook op 868 Mhz werkt. Ik denk namelijk dat de Homey de NRF905 gebruikt en hem excluisief in receive zet op de 433 Mhz frequentie. Ach, we gaan wel zien waar dit draadje heen gaat.

Als je de PWM print hebt, en nadat ik de foto's uitgeplozen heb, dan wil ik wel een keertje langs komen om op de I2C of SPI signalen te meten met mijn LogicAnalyzer. Alle bevindingen worden dan opensource op de site gezet >:) Ik woon in Eindhoven . ..

Acties:
  • +1Henk 'm!

  • ThinkPad
  • Registratie: juni 2005
  • Laatst online: 12:30

ThinkPad

Moderator Duurzame Energie & Domotica

L460

Topic is afgesplitst vanuit Optimale vraaggestuurde mechanische ventilatie aangezien het daar offtopic ging. Hier kunnen jullie in al jullie enthousiasme verder praten over het aansturen van jullie Itho MV's :)

Gas besparen door CV-tuning | Elektriciteit besparen
Geen (Domoticz) vragen via privébericht die ook via het forum kunnen a.u.b.


  • Chronos
  • Registratie: januari 2000
  • Laatst online: 08:53
Dankzij dit topic en de posts van Rogier (http://www.progz.nl/blog/...-itho-cve-eco-rft-part-6/) heb ik nu een ESP8226 in combinatie met een CC1101 met een webservice waarmee ik mijn Itho ECO kan aansturen, bedankt !

  • ThinkPad
  • Registratie: juni 2005
  • Laatst online: 12:30

ThinkPad

Moderator Duurzame Energie & Domotica

L460

quote:
Chronos schreef op dinsdag 23 augustus 2016 @ 18:08:
Dankzij dit topic en de posts van Rogier (http://www.progz.nl/blog/...-itho-cve-eco-rft-part-6/) heb ik nu een ESP8226 in combinatie met een CC1101 met een webservice waarmee ik mijn Itho ECO kan aansturen, bedankt !
Kun je de code hier ook posten? Heb je ook gelijk een backup voor jezelf enzo O-) :+

Gas besparen door CV-tuning | Elektriciteit besparen
Geen (Domoticz) vragen via privébericht die ook via het forum kunnen a.u.b.


  • Chronos
  • Registratie: januari 2000
  • Laatst online: 08:53
Ben inmiddels een iets andere weg ingeslagen. Gebruik nu een MQTT broker om commando's naar de ESP8226 te sturen. Dit werkt heel aardig, zeker omdat er ook MQTT appjes zijn voor bijv. Android.

Mijn idee is om uiteindelijk via websockets een interface (op de MQTT) te maken zodat bijv. IFTTT mijn Itho kan aansturen.

Volgende uitdaging is om websockets op mijn MQTT server (Mosquitto) aan de praat te krijgen, dit gaat niet heel soepel vooralsnog. Daarna moet ik de code nog beetje oppoetsen en zal ik het posten.

EDIT: https://github.com/Bertra...ter/Master/IthoEcoFanMQTT

Chronos wijzigde deze reactie 24-08-2016 17:33 (7%)
Reden: Github link toegevoegd


  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
quote:
Chronos schreef op zaterdag 27 augustus 2016 @ 21:28:
[...]


Heb hem geforkt van supersjimmie.
Vermoedde ik al, dat ben ik trouwens. :)

  • Stuntteam
  • Registratie: augustus 2015
  • Laatst online: 14-08-2018

Stuntteam

RFLink Gateway Development

Tnx, die komen er aan..
De bedoeling is om het als optie in RFLink te hangen.

-=# RFLink Gateway Development Team #=-


  • bgitmans
  • Registratie: augustus 2008
  • Laatst online: 15-11 20:29
quote:
TechApprentice schreef op dinsdag 06 september 2016 @ 14:33:
[...]


Kun je uitleggen hoe je het geheel aan de praat hebt gekregen? En dan de setup van Domoticz en de aanpassingen aan de code. Heb zelf al eens een ventilator laten draaien op basis van luchtvochtigheid, maar dit was een KAKU schakelaar.
Jazeker:

Eerst zeker weten dat jouw Itho eco ventilatie box geschikt is voor het draadloos ontvangen van signalen.
Dan heb ik een NodeMCU gebruikt en deze geprogrammeerd met de volgende code via de Arduino compiler.
Hiervoor moet je wel eerst de library voor de ESP8266 laden in de Arduino compiler. En natuurlijk de library voor de ventilator zelf.

Ik heb deze code gebruikt:
C++:
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
/*
 * Original Author: Klusjesman
 *
 * Tested with STK500 + ATMega328P
 * GCC-AVR compiler
 * 
 * Modified by supersjimmie:
 * Code and libraries made compatible with Arduino and ESP8266 
 * Tested with Arduino IDE v1.6.5 and 1.6.9
 * For ESP8266 tested with ESP8266 core for Arduino v 2.1.0 and 2.2.0 Stable
 * (See https://github.com/esp8266/Arduino/ )
 * 
 */

/*
CC11xx pins    ESP pins Arduino pins  Description
1 - VCC        VCC      VCC           3v3
2 - GND        GND      GND           Ground

3 - MOSI       13=D7    Pin 11        Data input to CC11xx
4 - SCK        14=D5    Pin 13        Clock pin
5 - MISO/GDO1  12=D6    Pin 12        Data output from CC11xx / serial clock from CC11xx
6 - GDO0       ?        Pin 2?        Serial data to CC11xx
7 - CSN        15=D8    Pin 10        Chip select / (SPI_SS)
8 - GDO2       ?        Pin  ?        output as a symbol of receiving or sending data
*/

#include <SPI.h>
#include "IthoCC1101.h"
#include "IthoPacket.h"
#include <ESP8266WiFi.h>

const char* ssid = "jouw-SSID";
const char* password = "jouw-password";

IthoCC1101 rf;
IthoPacket packet;
WiFiServer server(80);

void setup(void)
{
  
//Verbinden met de ITHO 
  Serial.begin(115200);
  delay(500);
  Serial.println("setup begin");
  rf.init();
  Serial.println("setup done");
  sendRegister();
  Serial.println("join command sent");

//Verbinden met Wifi
Serial.println();
  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");
  
  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.println(WiFi.localIP());
  
//  
  
}

void loop(void) {
  
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
  
  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }
  
    //set CC1101 registers
    rf.initReceive();
    Serial.print("start\n");
    sei();


  

  
  // Read the first line of the request
  String req = client.readStringUntil('\r');
  Serial.println(req);
  client.flush();
  
  // Match the request
 const char* val;
    if (req.indexOf("/low")!= -1)
   { 
     sendLowSpeed();
    val = "low";
   }
  else if (req.indexOf("/medium")!= -1)
   {
     sendMediumSpeed();
    val = "medium";
   }
  else if (req.indexOf("/high")!= -1)
    {
      sendFullSpeed();
    val = "high";
  }
  else if (req.indexOf("/timer")!= -1)
    {
      sendTimer();
    val = "timer";
  }
  else {
    Serial.println("invalid request");
    client.stop();
    return;
  }

//client.flush();

  // Prepare the response
  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\ ventilator is now ";
  s += val;
  s += "</html>\n";

  // Send the response to the client
  client.print(s);
  delay(1);
  Serial.println("Client disonnected");

  // The client will actually be disconnected 
  // when the function returns and 'client' object is detroyed
  
//  while (1==1) {
//      if (rf.checkForNewPacket()) {
//          packet = rf.getLastPacket();
//          //show counter
//          Serial.print("counter=");
//          Serial.print(packet.counter);
//          Serial.print(", ");
//          //show command
//          switch (packet.command) {
//              case unknown:
//                  Serial.print("unknown\n");
//                  break;
//              case low:
//                  Serial.print("low\n");
//                  break;
//              case medium:
//                  Serial.print("medium\n");
//                  break;
//              case full:
//                  Serial.print("full\n");
//                  break;
//              case timer1:
//                  Serial.print("timer1\n");
//                  break;
//              case timer2:
//                  Serial.print("timer2\n");
//                  break;
//              case timer3:
//                  Serial.print("timer3\n");
//                  break;
//              case join:
//                  Serial.print("join\n");
//                  break;
//              case leave:
//                  Serial.print("leave\n");
//                  break;
//          } // switch (recv) command
//      } // checkfornewpacket
//  yield();
//  } // while 1==1
//  
} // outer loop

void sendRegister() {
   Serial.println("sending join...");
   rf.sendCommand(join);
   Serial.println("sending join done.");
}

void sendLowSpeed() {
   Serial.println("sending low...");
   rf.sendCommand(low);
   Serial.println("sending low done.");
}

void sendMediumSpeed() {
   Serial.println("sending medium...");
   rf.sendCommand(medium);
   Serial.println("sending medium done.");
}

void sendFullSpeed() {
   Serial.println("sending FullSpeed...");
   rf.sendCommand(full);
   Serial.println("sending FullSpeed done.");
}

void sendTimer() {
   Serial.println("sending timer...");
   rf.sendCommand(timer1);
   Serial.println("sending timer done.");
}

waarbij het stuk voor het luisteren naar eventuele verzonden codes via een andere remote uitgeschakeld is, aangezien dit voor mij niet van toepassing is.

Zodra dit succesvol is verlopen, de ventilatie box spanningsloos maken en weer de spanning terug brengen, hierna de NodeMCU resetten, hierdoor wordt de (send register) uitgevoerd, en zou een koppeling gemaakt moeten zijn.

Hierna kun je de nodeMCU rechtstreeks via een intern IP adres benaderen, smet bijvoorbeeld http://192.168.x.y/high of http://192.168.x.y/low de nodeMCU aan te roepen, wordt de ventilator geschakeld.

aansluitschema aanhouden zoals hierboven reeds meermaals is beschreven.

ThinkPad wijzigde deze reactie 30-11-2016 12:37 (0%)
Reden: [code=c++] ipv [code] om het leesbaarder te maken ;-)


  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
quote:
bgitmans schreef op zondag 11 september 2016 @ 20:40:
[...]


Jazeker:
Ik heb deze code gebruikt:
code:
1
2
3
...
 * Modified by supersjimmie:
...

waarbij het stuk voor het luisteren naar eventuele verzonden codes via een andere remote uitgeschakeld is, aangezien dit voor mij niet van toepassing is.
Houd er sowieso rekening mee dat, als je wel wil luisteren naar een eventuele verzonden packet (code, button-press), dit vrijwel realtime moet gebeuren. Er mag dus vrijwel geen vertraging in de loop() zitten.
De cc1101 heeft maar een kleine buffer én de codes worden in 2 verschillende modulaties verzonden waardoor de code tijdens verzenden/ontvangen moet wisselen. (lastig uit te leggen)

Ik (die "supersjimmie" in die code) ben momenteel wel aan het testen om eea interrupt gedreven werkend te krijgen maar dat valt niet mee...

  • SiErRa
  • Registratie: februari 2000
  • Laatst online: 17-11 12:32
Bedankt voor de info en ook de foto, hij werkt, ik heb het code voorbeeld met de webserver gebruikt om hem aan OpenHAB te hangen. Het deel met het ontvangen van de andere afstandbedieningen gebruik ik nog niet, omdat ik 1 afstandsbediening en een ouderwetse schakelaar heb. Dus ik kan nooit zeker zijn over de huidige status.

Misschien dat ik daar ooit nog iets aan ga veranderen.

Sierra Level 85 Hunter @ Executus EU


  • petermdevries
  • Registratie: maart 2010
  • Laatst online: 17-11 21:25
quote:
studiodubio schreef op zaterdag 22 oktober 2016 @ 06:09:
[...]

Kun je eens de stappen beschrijven voor de dummy's onder ons?
Eigenlijk heb ik gewoon de stappen van https://gathering.tweakers.net/forum/view_message/48298993 gevolgd en de foto van https://gathering.tweakers.net/forum/view_message/48447665 gebruikt om de componenten aan elkaar te knopen.

Wanneer je de componenten aangesloten hebt, moet je de code van bgitmans in de NodeMCU laden.

Hiervoor heb ik Arduino gedownload en vervolgens de board manager voor de NodeMCU gedownload (zie stappen op https://github.com/esp8266/Arduino/) en de NodeMCU ingesteld.

Tenslotte de libraries gedownload van https://github.com/supers...T/tree/master/Master/Itho en het geheel gecompileerd en geupload naar de NodeMCU.

  • incmve
  • Registratie: augustus 2008
  • Laatst online: 14-11 09:04

incmve

maredana.nl

Ik had ook problemen met ontvangen, nieuwe CC1101 besteld en nog niet werken.
Wissel ik de Wemos voor een Nodemcu en viola het werkt :?

De Wemos werkt prima met andere dingen zoals RF etc. 8)7

Ik heb zelf wat bij elkaar geprakt met de code van supersjimmie, web interface met OTA en API zodat ik vanuit pimatic ook de ventilator aan kan zetten.
Wil later nog een DHT22 er op knopen om hem zelfstandig te laten draaien in de badkamer.


Ik ben echt geen programmeur maar voor de liefhebber: https://github.com/incmve/Itho-WIFI-remote

Mijn YT kanaal - Mijn domotica blog


  • Templar
  • Registratie: september 2000
  • Laatst online: 17-11 12:39
quote:
ThinkPad schreef op donderdag 8 december 2016 @ 19:40:
[...]

Daarom zei ik, koop ergens online zo'n remote, lees hem uit en stuur hem terug.
Als je het ding weer netjes maakt (vingerafdrukken eraf poetsen, weer netjes in plastic etc.) dan lijkt mij dat geen probleem. Via de WKOA heb je 14 dagen voordat hij weer terug moet.
Is crowdsourcen geen optie? Zorgen dat de software de communicatie (hexadecimaal) weergeeft in een terminalvenster en die logs posten met bijbehorende toetsaanslagen en artikelnummer van de zender? Volgens mij zijn er genoeg geïnteresseerden die zo een steentje willen bijdragen en krijg je een grotere hoeveelheid aan informatie.

  • Pixelmagic
  • Registratie: september 2002
  • Laatst online: 08:35
Wat ik me nog wel afvraag, is er iemand in staat en bereid om de Itho aan te sturen via ESP Easy, als plugin ? Dat zou helemaal mooi zijn om ook nog andere zaken via dezelfde ESP te kunnen sturen.

Visual Pinball project: pinball.pixelmagic.nl Informatie over mijn PV installatie PVoutput van mijn 2760Wp


  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
quote:
petermdevries schreef op vrijdag 9 december 2016 @ 22:44:
[...]

Ik zit even te kijken of ik uiteindelijk ook iets van een id uit het ontvangen packet kan halen. Ik heb 2 remote controls en op zich zou het nog wel aardig zijn als weet op welke van de 2 is gedrukt. Ik zie dat de packet class wel een deviceId bevat, maar deze lijkt nog niet gevuld te worden?
Dat heb ik wel in mijn eigen code, die ik (nog) niet aan mijn github 'supersjimmie' heb toegevoegd.
Ik zal ff zien of ik die specifieke aanpassingen hier zo kan neerzetten...

EDIT:
Toevoeging onderaan IthoCC1101.cpp:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bool IthoCC1101::checkID(const uint8_t *id)
{
    for (uint8_t i=0; i<8;i++)
        if (id[i] != inIthoPacket.deviceId[i])
            return false;
    return true;
}

String IthoCC1101::getLastIDstr() {
    String str;
    for (uint8_t i=0; i<8;i++) {
        str += String(inIthoPacket.deviceId[i], HEX);
        if (i<7) str += "-";
    }
    return str;
}

Toevoeging aan IthoCC1101.h in de sectie 'public:':
C++:
1
2
        bool checkID(const uint8_t *id);
        String getLastIDstr();

Met bijv String myID = rf.getLastIDstr() krijg je het ID van de laatst ingedrukte knop terug.
En met bijv bool chk = rf.checkID(RFTid); kan je controleren of het ID van een bepaalde remote komt.
(waarbij je eerst RFTid moet vullen, bijv met uint8_t RFTid[] = {106, 170, 105, 101, 155, 106, 155, 85}; )

jvdmast wijzigde deze reactie 12-12-2016 09:33 (41%)
Reden: code toegevoegd


  • racquemis
  • Registratie: maart 2010
  • Nu online
Ik heb hier een remote met niet-thuis knop. Als iemand me even wegwijs kan maken in het uitlezen van de code kan dit wel doen.

  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
quote:
racquemis schreef op donderdag 22 december 2016 @ 10:08:
Ik heb hier een remote met niet-thuis knop. Als iemand me even wegwijs kan maken in het uitlezen van de code kan dit wel doen.
Heb je wel al een esp8266 (of arduino) met een c1101 werkend om gewoon de codes te verzenden en ontvangen?
quote:
ThinkPad schreef op donderdag 22 december 2016 @ 10:19:
Misschien woont jvdmast bij je in de buurt, hij heeft de hardware al beschikbaar om een remote te kunnen uitlezen als ik het goed begrijp.
En anders zou dat een mogelijkheid zijn ja.

jvdmast wijzigde deze reactie 22-12-2016 10:23 (30%)


  • racquemis
  • Registratie: maart 2010
  • Nu online
Dat lijkt me een minder goed idee. als ik de remote kwijtraak in de post heb ik de huurbaas wat uit te leggen. Daarnaast heb ik geen andere manier dan de remote om de itho te bedienen. Zonder standje hoog gaat het rookmelder telkens bij het douchen af 8)7

jvdmast,als je me vertrouwd wil ik best je spare ontvangen en direct weer retourneren. Ik heb hier een arduino en meerdere ESP8266s liggen. Ik kan de opstelling zo maken.

En anders even max. 2 weken wachten tot ik mijn eigen binnen heb. Dat geduld kunnen we vast opbrengen :P
We hebben nu in iedergeval iemand gevonden die deze remote heeft om de library compleet te maken ;)

racquemis wijzigde deze reactie 22-12-2016 11:28 (8%)


  • racquemis
  • Registratie: maart 2010
  • Nu online
DM verstuurd ;)

  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
quote:
racquemis schreef op donderdag 22 december 2016 @ 16:57:
Ik ga dat vanavond of morgen even beoordelen. Ik weet dat in niet thuis stand er eigenlijk geen geluid te horen valt uit de ventilatieroosters. Maar of ie uit Is of alleen zeer langzaam draait weet ik nog niet. Ook niet of ie na een paar uur even harder gaat draaien. Ik ga het onderzoeken
Hmm, dat zou betekenen dat die stand die ik "opwekte" iets anders is.
(dat is ongeveer 20s uit en dan 2s aan)
Wat dan ook weer deels verklaart waarom een eerste test bij iemand ander faalde, want daar ging de fan juist op stand 24 ofzo. >:)

  • racquemis
  • Registratie: maart 2010
  • Nu online
Inmiddels de CC1101 van jvdmast ontvangen en aan d praat gekregen op een esp-12f. De join is gelukt. nu nog kijken of het allemaal echt goed werkt door commando's te sturen en dan de remote uitlezen ;)

  • racquemis
  • Registratie: maart 2010
  • Nu online
Ik krijg het ook niet voor elkaar om messages te ontvangen terwijl versturen wel gewoon werkt.
jvdmast is me aan het assisteren via DM, maar misschien handig hier verder te communiceren? hebben anderen er wellicht ook wat aan.

  • edjeed
  • Registratie: april 2011
  • Niet online
Zou mooi zijn als het probleem kan worden gevonden.
Ik ben bezig met mijn eigen 'smarthome' en heb een touchscreen met pi in de woonkamer hangen waar ik de status/bediening op kan zien/regelen. Nu kan ik alleen de Itho aansturen, maar nog niet zien wat de huidige status is.
display

Acties:
  • +1Henk 'm!

  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
quote:
edjeed schreef op maandag 26 december 2016 @ 11:19:
Ik gebruik de code van jvdmast maar kan ook geen messages ontvangen met een witty cloud ESP module. verzenden gaat wel goed,
Ik vermoed een soortgelijk probleem als hieronder.
quote:
racquemis schreef op woensdag 28 december 2016 @ 22:31:
Wanneer ik vervolgens op de knop op de remote toets zie ik netjes regels van 15 bytes voorbij komen. Enkele probleem is dat geen enkele regel hetzelfde is. Zelfs niets de 2 repeats die de controller stuurt.

Onderstaande lijst bevat de resultaten die ik kreeg voor Message1 door heel vaak op de knop te drukken
code:
1
<knip>

Geen 1 is gelijk, heb ik dan zoveel last van interferentie???

Een aantal keer werd er een goed commando gevonden:
<knip>
[/code]
De regel
code:
1
Received Message2 bytes: 42 170 170 170 172 3 128 0 0 64 0 0 0 0 0 0 16 16 64 0 8 0 0 0 32 0 64 0 0 0 0 0 0 52 0 1 0 16 0 4 1 0

komt meerdere malen. Zou dit het commando van de niet thuis knop zijn??
Ik zeg 99% zeker een te slechte ontvanngst.
Omdat je mijn spare module gebruikt met de nogal slechte antenne wordt dat vermoeden versterkt. Het zou zelfs kunnen dat (onder de lijm) de antenne helemaal los is geraakt tijdens verzending.
Probeer het eens met de zendende en ontvangende modules (itho en cc1101) pal bovenop elkaar?

Wat betreft je ontvangen codes en de mogelijke niet thuis, er komen normaal helemaal geen nullen voor in de codes.
quote:
remcoXP schreef op zaterdag 31 december 2016 @ 18:01:
zo het ding gesoldeerd en aan mijn nodemcu v3 gehangen.
allesn bij flashen vanaf arduino 2.0 een fout. daarom de vertrouwde 1.6.13 geinstalleerd. maar nog steeds:

[/code]
In file included from C:\Users\remco\Documents\Arduino\libraries\Itho\IthoCC1101.h:10:0,

from C:\Users\remco\Documents\Arduino\libraries\Itho\IthoCC1101.cpp:5:

C:\Users\remco\Documents\Arduino\libraries\Itho\IthoPacket.h:24:1: warning: 'typedef' was ignored in this declaration [enabled by default]
[/code]

of
code:
1
2
3
4
5
6
7
8
9
10
C:\Users\remco\Documents\Arduino\Itho-WIFI-remote\Itho-WIFI-remote.ino:8:27: fatal error: SerialCommand.h: No such file or directory

 #include <SerialCommand.h>

                           ^

compilation terminated.

exit status 1
Error compiling for board Generic ESP8266 Module.

de versies die ik heb geprobeerd is die van supersjimmie en die van incmve
zou zou dit waarschijnlijk bekende koek voor jullie zijn. maar ik snap er niets van :P
In mijn versie staat helemaal geen #include SerialCommand.h dus dat is zeer zeker niet mijn code.
(waarmee ik bedoel: niet de github supersjimmie code)

  • japie101
  • Registratie: augustus 2003
  • Laatst online: 11:57
Ik ben ook aan de slag gegaan, heb de code gebruikt die in dit topic eerder is geplaatst, met een paar kleine aanpassingen.

Vandaag de join gedaan, dit ging goed maar na de join kon ik nog 1 maal een "high" versturen en daarna was de web interface niet meer te benaderen, even spanningsloos gemaakt en alles werkt nu en blijft ook werken.

Bedankt voor alle hulp in dit topic.

Itho

  • Whizzer
  • Registratie: november 2000
  • Laatst online: 23-10 20:46

Whizzer

Flappie!

quote:
Whizzer schreef op woensdag 14 december 2016 @ 14:16:
Met de NodeMCU deed hij het bij mij ook niet.. Wellicht is de CC1101 kapot, dus ik heb een diepteinvestering gedaan om daar een nieuwe voor te bestellen.. ;)
oOo Goede investering geweest.. oOo

Nieuwe module aangesloten op de NodeMCU, even de code dat hij ook laat zien wat hij ontvangt en meteen begon hij data uit te spugen.

Dus eindelijk werkend. Nu even kijken welke code het fijnste werkt en dan kan ie opgenomen worden in de hele Domoticz omgeving.

Ik ben geweldig.. en bescheiden! | AnimalCribs, dé plek om te shoppen voor uw huisdier


  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
Leuk om te zien hoe het uiteindelijk (bijna) overal wel werkt. :)
Daarom nog wel even een linkje naar waar we het allemaal aan te danken hebben:
http://www.progz.nl/blog/...-itho-cve-eco-rft-part-1/

  • racquemis
  • Registratie: maart 2010
  • Nu online
Zal je net zien, De CC1101 lag vandaag in de bus. Ik kan aan de slag.

  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
quote:
rorie schreef op donderdag 12 januari 2017 @ 13:21:
Mijn volgende stap is om deze DHT22 data via MQTT aan Domoticz door te geven. Is er hier iemand die een zijn of een stukje voorbeeldcode heeft om de uitgelezen waardes van de DHT22 via MQTT naar domoticz te sturen?
Dit lijkt me daarvoor een betere plek: Het grote ESP topic of [Discussie] Arduino-topic

jvdmast wijzigde deze reactie 12-01-2017 14:48 (6%)


  • racquemis
  • Registratie: maart 2010
  • Nu online
Eerste update over het uitlezen remote:

Vandaag een opstelling gemaakt om de SPI communicatie van mijn remote uit te lezen.
Met de datasheet van de MEGA169PV erbij gekeken waar de signalen voor SCK, MOSI, MISO en CS zaten en natuurlijk ook de GND.
MISO blijkt compleet niet aangesloten zijn, voor de overige signalen zijn er mooie testeilandjes op de printplaat ruim genoeg om wat draden aan te solderen.
Het eindresultaat:



Na de draden aangesloten te hebben op de logic analyzer kwam de data al direct erg betrouwbaar binnen, meerdere keren op dezelfde drukken levert hetzelfde resultaat op.
Wat direct opvalt is dat deze remote met elke druk op de knop 6x het commando verstuurt. waar bij elke keer opnieuw alle configuratie registers geschreven worden (beetje inefficiënt)



Het commando heb ik nog niet kunnen vinden. geen van de markers die het begin of einde van een commando aanduiden heb ik kunnen vinden dus deze remote doet iets anders.
De ontvangen data is echter wel valide:
Het eerste SPI commando dat word gegeven is 0x30 – Reset CC1101
Gevolgd door:
- IOCFG0 = 0x2E
- FREQ2 = 0x21
- FREQ1 = 0x65
- FREQ0 = 0x6A
Volgens RFStudio komen de waarden voor FREQ2, FREQ1, FREQ0 overeen met een base frequency van 868.299866 Mhz

Later meer.

  • racquemis
  • Registratie: maart 2010
  • Nu online
Mijn logic analyzer werd gistermiddag niet meer herkend in windows. Na een paar uur stoeien weer aan de praat gekregen en de niet-thuis code kunnen uitlezen:

Dit is dat er verzonden word:
Message 1: 170 170 170 172 173 45 44 203 84 171 85 53 84 204 205 84 170 171 85 77
Message 2: 170 170 170 170 170 170 170 171 254 0 179 42 171 42 149 154 101 90 85 105 169 166 169 166 149 170 102 89 150 170 165 101 90 150 85 149 101 90 86 85 150 105 153 90 172 170 170 170 170 170 7

jvdmast, kan je hier wat mee om het niet-thuis commando in de library te verwerken?

  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
quote:
racquemis schreef op maandag 16 januari 2017 @ 12:20:
Mijn logic analyzer werd gistermiddag niet meer herkend in windows. Na een paar uur stoeien weer aan de praat gekregen en de niet-thuis code kunnen uitlezen:

Dit is dat er verzonden word:
Message 1: 170 170 170 172 173 45 44 203 84 171 85 53 84 204 205 84 170 171 85 77
Message 2: 170 170 170 170 170 170 170 171 254 0 179 42 171 42 149 154 101 90 85 105 169 166 169 166 149 170 102 89 150 170 165 101 90 150 85 149 101 90 86 85 150 105 153 90 172 170 170 170 170 170 7

jvdmast, kan je hier wat mee om het niet-thuis commando in de library te verwerken?
Zekers!
Ik werk momenteel met een variant die alleen nog message2 stuurt omdat mijn itho daarnaar luistert, en dan zou een "niet thuis" er zo uit gaan zien:
code:
1
const uint8_t ithoMessage2AwayCommandBytes[]  = {6,89,150,170,165,101,90,150,85,149,101,90, 86, 85,150};

Wat voor mij eigenlijk best een beetje frusterend was, want een hele poos geleden had ik met een trial and error methode BIJNA hetzelde, ik zat er maar 1 byte naast, en binnen dat byte dan zelf maar 1 BIT!:
code:
1
const uint8_t ithoMessage2AwayCommandBytes[]  = {6,89,150,170,165,101,90,150,85,149,101,90,102, 85,150};

Mijn 102 moest 86 zijn en dat is precies 1 bit verschil....... |:(

  • edjeed
  • Registratie: april 2011
  • Niet online
quote:
jvdmast schreef op maandag 16 januari 2017 @ 18:19:
[...]

Kan je aangeven wat er veranderd is? Dan kan ik makkelijker nagaan of dat mee te nemen is in een update op mijn (supersjimmie) github versie.
(dan graag incl je andere post)
Heb even een fork gemaakt van je githubrepo, zie voor veranderingen de laatste commit...

https://github.com/edjeed/IthoEcoFanRFT

  • racquemis
  • Registratie: maart 2010
  • Nu online
quote:
ThinkPad schreef op dinsdag 17 januari 2017 @ 22:17:
Hoe is het bereik eigenlijk met zo'n CC1101?
Kan ik CC1101 + ESP8266 in meterkast plaatsen en dan de ventilatiebox op zolder bereiken?
Ja dit moet lukken, ik kan met de cc1101 met standaard antenne gewoon vanaf benden m'n itho op zolder sturen. Hij reageert direct. Nog geen haperingen erin gezien. Het ligt er misschien ook even beetje aan hoe goed de antenne gesoldeerd Is.

  • racquemis
  • Registratie: maart 2010
  • Nu online
@ThinkPad
De betrouwbaarheid? ik kan enkel zeg dat ik tot op heden nog geen gemist commando heb gehad. Als het goed is word het commando door de library reeds 3 maal verstuurd om de kans te vergroten dat het bericht opgepikt word. Je kan natuurlijk ook een z-wave energiemeter aan de Itho hangen en zo automatisch of binnen een gestelde tijd na het commando de itho harder gaat draaien, zo niet dan het commando opnieuw sturen en weer wachten.

  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
quote:
ThinkPad schreef op woensdag 18 januari 2017 @ 08:13:
[...]

Bedankt, misschien toch maar eens over nadenken dan, ipv de oplossing met relais die ik eerst voor ogen had.

Hoe is de betrouwbaarheid schat je? Bij KlikAanKlikUit spul op 433Mhz wil het nog wel eens gebeuren dat een commando niet aankomt bij de ontvanger. Is het hier 10 uit 10 of valt er hier ook wel eens een commando weg? Of is dat een kwestie van aantal retries verhogen?

P.S. Misschien nog leuk voor de mensen hier, voor ~€22 haal je een CO2-sensor uit China, die knup je aan een ESP8266 en dan kun je eenvoudig het CO2-niveau in je woning uitlezen. Samen met zo'n CC1101-transmitter kun je dan mooi je ventilatie gaan aansturen op basis van de luchtkwaliteit.
Zowel de originele remote als de variant hier stuurt de codes 3 keer. Hoe groot is de kans... Tsja, als ik onze zoon 3x roep dat we gaan eten is de kans groot dat hij het hoort, maar heel soms is 3x nog niet genoeg. :z
Natuurlijk puur afhankelijk van de de afstand en de obstakels, zo simpel is het.
Ik heb de cc1101 beneden en de fan op zolder met 2 betonnen vloeren en ik heb nooit iets gemist. En de normale remote hangt op de 1e verdieping in meestal ontvangt mijn cc1101 minstens 2 van de 3 verzonden pakketjes (ook die originele remote stuurt alles 3 keer).

Wat betreft CO2, ik doe dat met een MQ135 van 1,50.
Niet nauwkeurig maar goed genoeg om de 3 snelheden van de itho aan te sturen.

  • japie101
  • Registratie: augustus 2003
  • Laatst online: 11:57
quote:
ThinkPad schreef op dinsdag 17 januari 2017 @ 22:17:
Hoe is het bereik eigenlijk met zo'n CC1101?
Kan ik CC1101 + ESP8266 in meterkast plaatsen en dan de ventilatiebox op zolder bereiken?
Ik kan inderdaad ook bevestigen dat de transmitter op de keukentafel prima functioneert op de Itho die op zolder staat. Dit doe ik gewoon met de kleine antenne die met de CC1101 meegeleverd wordt.
Gaat bij mij door 2 x betonvloer (nieuwbouwhuis).

  • edjeed
  • Registratie: april 2011
  • Niet online
quote:
rorie schreef op vrijdag 20 januari 2017 @ 10:45:
Bedankt voor je reactie, wat je zegt klinkt logisch. Initieel in de setup dus een rf.init() en daarna een rf.initReceive() waardoor de cc1101 geinitialiseerd word en daarna in de receive mode word gezet. Zodra er een rf.sendCommand() gestuurd is kan er geen data van externe remotes ontvangen worden tot dat de rf.initReceive() weer aangeroepen is.

Wat zou betekenen dat de code van incmve (https://github.com/incmve/Itho-WIFI-remote) niet werkt omdat daar enkel een rf.initReceive() in de setup word gedaan, zonder een rf.init() en na de setup ook geen rf.initReceive() meer.
rf.init is nodig om ervoor te zorgen dat de initialisatie goed gaat na power up, als er pinnen zweven of (in)actief worden tijdens het opstarten van de ESP terwijl de CC1101 al actief is, kunnen er onvoorziene situaties ontstaan. het kan dus goed gaan, maar het is beter om de cc1101 te resetten nadat de ESP is opgestart.

Voor de rf.initReceive... Check de Issue op github ;)

  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
quote:
remcoXP schreef op vrijdag 20 januari 2017 @ 17:09:
heeft iemand ervaring met: http://www.banggood.com/X...1095214.html?rmmds=search
?
het leek mij een mooi cameratje om in de keuken te plaatsen zodat ik kan zien wie er voor de deur zit.

dus een snapshot of via synology surveillance.. iemand die kan bevestigen dat dit een leuke koop is voor dit doeleinde ?
Euhm, wil je dan je itho ecofan met die camera gaan bedienen? ;)

  • deklusjesman
  • Registratie: december 2016
  • Laatst online: 28-01-2017
Ik heb zo'n Duco C remote in huis met standby knop.

In mijn code op github zit een fout. Misschien dat jullie die al gevonden hebben. Message1 en message2 hebben ieder hun eigen "device id". In de oorspronkelijke code was er 1 device id. In één van de functies werden de bytes van het device id hardcoded weggeschreven. Hiervoor had ik natuurlijk de array met het id moeten gebruiken. Ik vermoed dat message1 nooit goed gewerkt heeft omdat ik het device id van message2 erin wegschreef.

Het command voor de standby was eenvoudig te achterhalen. Ik heb eerst de al bestaande commands gecontroleerd en het blijkt dat deze in message1 1 bit anders hebben staan ten opzichte van mijn andere remote.

In message2 krijg ik foutmeldingen in de log op enkele counter bytes. Na een aantal keer drukken kan ik zien dat statische arrays hetzelfde zijn, maar de calculatie iets aangepast moet worden. De data verloopt namelijk iets. Nu is dus de vraag hoe dit allemaal bepaald is. Ik vermoed dat een bit\byte in het "device id" hier invloed op heeft. Het probleem is dat ik met data van 2 remotes dit niet kan achterhalen. Ik heb daarvoor veel meer data nodig om te vergelijken.

Hetgeen waar ik naartoe wil is alle commands werkend in de software. Met hetgeen ik nu weet kan ik echter:
- remote met timerknop, alle commands werkend
- remote met standby, alle commands werkend (nog niet geimplementeerd)

Maar het zou natuurlijk interessant zijn om de standby command op de code van de remote met timerknop te gebruiken. Of andersom, de timer functie op de remote met de standbyknop.

Het lijkt me dat dit mogelijk moet zijn en dat hier een nog onbekende berekening achter zit.

Op dit moment heb ik de volgende verschillen:
- message1 byte13 en 14 (command byte) verschil van 1 bit
- message2, byte41,42,43 (counter bytes) verloop

De overige bytes zien er tot dusver allemaal goed uit. Ook de overige counter bytes. Vandaar dat ik vermoed dat er een berekening achter zit die data gebruikt uit het "device id". Want dat is het enige verschil tussen de remotes.

  • racquemis
  • Registratie: maart 2010
  • Nu online
Oké, ik heb het voor elkaar gekregen dat m'n itho nu op het niet-thuis commando reageert. :D
Als enumwaarde heb ik 34 en vervolgens in de byte calculaties in alle switch case op de plek waar 'case IthoLow:' staat vermeld ook case IthoAway toegevoegd.

One Catch: Hij reageert enkel wanneer ik het niet-thuis commando voor een tweede keer geef.
Dus als ik eerst het low/medium/high commando geef en vervolgens het away commando doet mijn itho niks. Stuurt ik vervolgens het away commando nogmaals dan springt de Itho wel naar de niet-thuis stand.

Ik gebruik wel de commandbytes voor low/medium/full van mijn eigen remote. Weet niet of dat er wat mee te maken kan hebben dat het hier nu werkt?

racquemis wijzigde deze reactie 22-01-2017 12:54 (11%)


  • racquemis
  • Registratie: maart 2010
  • Nu online
De crash is inmiddels verholpen, ik denk inderdaad door een vergeten case ergens. Ineens werkte het wel, geen idee wat ik precies ervoor veranderd heb.

Het verschil tussen klusjesman en mij zit wellicht in dat hij zijn remote bij de itho als de duco remote registreert via de join i.p.v. als de rft remote??

Ik zal binnenkort de code even delen zoals ik die nu gebruik. Ben dan benieuwd of anderen het ook werkend krijgen.

  • deklusjesman
  • Registratie: december 2016
  • Laatst online: 28-01-2017
quote:
racquemis schreef op zondag 22 januari 2017 @ 16:10:
Het verschil tussen klusjesman en mij zit wellicht in dat hij zijn remote bij de itho als de duco remote registreert via de join i.p.v. als de rft remote??
Dat klopt. Het is me nog niet gelukt die standby functie te gebruiken via een gejoinde rft remote.

edit: ik heb de standby nu ook werkend met de rft remote code. Dan kan eigenlijk mijn hele duco code er weer uit denk ik. Zal het nog eens goed testen of alle counter bytes goed zijn, is lastig te controleren omdat de berekening anders is dan met de duco remote.

edit: ik kom er nu achter dat zowel 34 als 251 werken als standby command. Alleen op verschillende momenten omdat de berekening van (ik gok) byte43 dan niet klopt.

edit:
de goede code moet zijn, werkt perfect hier:

case rft_standby:
counter -= 1;
if (counter % 2 == 0) counter -= 1;
break;

edit: er is ook een tegenhanger van standby, heb het commando beredeneerd en de enum is ook goed. Hij gaat hiermee op full power en maakt dan wel veel herrie. Dus in feite heb ik nu 5 standen. :o

deklusjesman wijzigde deze reactie 22-01-2017 18:10 (57%)


  • edjeed
  • Registratie: april 2011
  • Niet online
quote:
deklusjesman schreef op maandag 23 januari 2017 @ 10:32:
[...]
Misschien is het dan handig om die [code] tag ook ergens kenbaar te maken. Als ik een nieuwe reactie type zie ik een berg smileys en een reeks andere tags, maar niks wat toepasbaar zou kunnen zijn voor een stuk code. Heb hier voor plaatsing nog naar gezocht. Op veel fora is er een tag waarmee je een stuk tekst kan in\uitklappen. Zoiets had ik wel als icoontje verwacht tijdens het invoeren. Ik ga er verder ook geen studie van maken als ik een keer iets post.
Voor alle tags....

Overzicht van UBB-codes

  • deklusjesman
  • Registratie: december 2016
  • Laatst online: 28-01-2017
Ik heb alle aanpassingen op github gezet (/Klusjesman/IthoEcoFanRFT).

Ik zal later nog eens bekijken of er ook een commando bestaat om de gehele fan uit te schakelen.

  • racquemis
  • Registratie: maart 2010
  • Nu online
Ik zal binnenkort even kijken of ik de missende gegevens boven water kan toveren ;)

  • ThinkPad
  • Registratie: juni 2005
  • Laatst online: 12:30

ThinkPad

Moderator Duurzame Energie & Domotica

L460

quote:
Templer schreef op zondag 19 februari 2017 @ 18:48:
[...]


Stap 1 is gezet met een inventarisatie van de remotes & functies en waar bekend de command-ID's. Indien men zich geroepen voelt, gaarne de informatie in dit topic delen.
raquemis, ik mis namelijk informatie betreffende jouw remote.

Itho protocol command ID's overzicht
Kun je er geen Google Sheet van maken? Dan kunnen meerdere mensen toevoegen/bewerken.

Gas besparen door CV-tuning | Elektriciteit besparen
Geen (Domoticz) vragen via privébericht die ook via het forum kunnen a.u.b.


Acties:
  • +1Henk 'm!

  • Templar
  • Registratie: september 2000
  • Laatst online: 17-11 12:39
quote:
Ik heb Pimmetje651 voorzien van mijn bestanden, thumbs up. :)

  • Templar
  • Registratie: september 2000
  • Laatst online: 17-11 12:39
quote:
ThinkPad schreef op vrijdag 10 maart 2017 @ 23:53:
Is één keer koppelen trouwens genoeg (heeft de CC1101 een soort 'MAC-adres') of moet je als je verschillende sketches probeert, ook telkens opnieuw pairen?
Een keer pairen is genoeg, in de geflashde firmware (IthoCC1101.cpp) zit het deviceId hardcoded. Als je 'm hebt aangemeld op jouw ventilatie-unit, zal de unit het device-Id onthouden totdat je 'm afmeld.

  • ThinkPad
  • Registratie: juni 2005
  • Laatst online: 12:30

ThinkPad

Moderator Duurzame Energie & Domotica

L460

@Guy Treepbush De webserver van @bgitmans bleek toch niet helemaal in orde op de één of andere manier. Ik heb deze pagina als voorbeeld gepakt voor het aansturen van een ESP8266 via webpagina en daar de Itho commando's in geklust. Onderstaande code werkt perfect. De Itho reageert direct en ik krijg ook gelijk terugkoppeling in de webpagina:
C++:
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#include <SPI.h>
#include "IthoCC1101.h"
#include "IthoPacket.h"
#include <ESP8266WiFi.h>

//////////////////////
// WiFi Definitions //
//////////////////////
const char WiFiSSID[] = "JOUWSSID";
const char WiFiPSK[] = "JOUWWACHTWOORD";

IthoCC1101 rf;
IthoPacket packet;
WiFiServer server(80);

void setup() 
{

  Serial.begin(115200);
  delay(500);
  Serial.println("");
  Serial.println("ESP8266 remote for Itho ventilation unit");
  Serial.println("See https://gathering.tweakers.net/forum/list_messages/1690945 for more information!");
  Serial.println("Setting up CC1101 module...");
  rf.init();
  Serial.println("CC1101 transmitter is now ready!");
  Serial.println("");
  sendRegister();
  connectWiFi();
  Serial.println("");
  // Start the server
  Serial.println("Starting webserver...");
  server.begin();
  Serial.println("Webserver is now running!");
  
}

void loop() 
{
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }

  // Read the first line of the request
  String req = client.readStringUntil('\r');
  Serial.println(req);
  client.flush();

  // Match the request
  const char* val;

  if (req.indexOf("/low") != -1) {
    val = "low";
    sendLowSpeed();
  }
  else if (req.indexOf("/medium") != -1) {
    val = "medium";
    sendMediumSpeed();
  }
  else if (req.indexOf("/high") != -1) {
    val = "high";
    sendFullSpeed();    
  }
  else if (req.indexOf("/timer") != -1) {
  val = "timer";
    sendTimer();    
  }
  client.flush();

  // Prepare the response. Start with the common header:
  String s = "HTTP/1.1 200 OK\r\n";
  s += "Content-Type: text/html\r\n\r\n";
  s += "<!DOCTYPE HTML>\r\n<html>\r\n";
  // If we're setting the LED, print out a message saying we did
  if (val != NULL)
  {
    s += "Fan is now: ";
    s += val;
  }
  else
  {
    s += "Invalid Request.<br> Try /low, /medium, /high or /timer.";
  }
  s += "</html>\n";

  // Send the response to the client
  client.print(s);
  delay(1);
  Serial.println("Client disconnected");

  // The client will actually be disconnected 
  // when the function returns and 'client' object is detroyed
}

void connectWiFi()
{
  //byte ledStatus = LOW;

  // Set WiFi mode to station (as opposed to AP or AP_STA)
  WiFi.mode(WIFI_STA);

  // WiFI.begin([ssid], [passkey]) initiates a WiFI connection
  // to the stated [ssid], using the [passkey] as a WPA, WPA2,
  // or WEP passphrase.
  Serial.println();
  Serial.print("Connecting to wifi-network: ");
  Serial.print(WiFiSSID);
  WiFi.begin(WiFiSSID, WiFiPSK);

  // Use the WiFi.status() function to check if the ESP8266
  // is connected to a WiFi network.
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("I am now connected to '");
  Serial.print(WiFiSSID);
  Serial.print("' and my IP-address is: ");
  Serial.println(WiFi.localIP());
}

void sendRegister() {
  Serial.println("Sending command 'join' to Itho ventilation unit...");
   rf.sendCommand(IthoJoin);
   Serial.println("Command 'join' has been sent!");
}

void sendLowSpeed() {
   Serial.println("Sending command 'low' to Itho ventilation unit...");
   rf.sendCommand(IthoLow);
   Serial.println("Command 'low' has been sent!");
}

void sendMediumSpeed() {
   Serial.println("Sending command 'medium' to Itho ventilation unit...");
   rf.sendCommand(IthoMedium);
   Serial.println("Command 'medium' has been sent!");
}

void sendFullSpeed() {
   Serial.println("Sending command 'fullspeed' to Itho ventilation unit...");
   rf.sendCommand(IthoFull);
   Serial.println("Command 'fullspeed' has been sent!");
}

void sendTimer() {
   Serial.println("Sending command 'timer' to Itho ventilation unit...");
   rf.sendCommand(IthoTimer1);
   Serial.println("Command 'timer' has been sent!");
}

Dit is overigens met de library van supersjimmie.

quote:
E.e.a. was mij niet helemaal duidelijk aan deze MQTT sketch, maar na wat proberen is het toch gelukt. Ik kwam er niet helemaal uit hoe je het IP-adres moest invullen (met punten ertussen, of met komma's?) en hoe je het topic moest definiëren. Uiteindelijk bleek dit te werken:
C++:
1
2
3
4
const char* mqttServer = "192.168.4.14";
const char* mqttTopic = "/itho/";
const char* mqttUsername = "";
const char* mqttPassword = "";

Heb nog e.e.a. aangepast in je sketch, o.a. het 'praat' en 'luister' kanaal op MQTT uit elkaar getrokken, eerder luisterde en praatte hij in hetzelfde kanaal. Ook de 3x retry die jvdmast noemde heb ik eruit gehaald.
Complete MQTT sketch staat hier. Heb hem nu sinds gistermiddag draaien en werkt uitstekend!

ThinkPad wijzigde deze reactie 24-03-2017 09:23 (42%)

Gas besparen door CV-tuning | Elektriciteit besparen
Geen (Domoticz) vragen via privébericht die ook via het forum kunnen a.u.b.


  • Whizzer
  • Registratie: november 2000
  • Laatst online: 23-10 20:46

Whizzer

Flappie!

quote:
Mooie opzet!! Dank!

Ik had geprobeerd beide te combineren, zodat ik via de webinterface de boel kon aansturen en via MQTT op de broker in het itho/out topic eigenlijk een terugkoppeling had. Om een of andere reden lijkt dat niet te werken, het is of het ene, of het andere.. Kan dat kloppen?

Qua programmeren blijf ik een absolute n00b, dus ik ben niet in staat dat zelf te verifiëren...

Ik ben geweldig.. en bescheiden! | AnimalCribs, dé plek om te shoppen voor uw huisdier


  • sven_
  • Registratie: mei 2011
  • Laatst online: 16-11 23:21
quote:
Speedy-Andre schreef op donderdag 23 maart 2017 @ 09:40:
[...]

Die van jou heb ik idd geprobeerd en die geeft 2 pagina's met errors :P
Het lijkt of dingen dubbel gebeuren, voor mij best lastig om de vinger op de zere plek te leggen.
Misschien gaat het met een oudere IDE beter, ik heb nu de nieuwste met dit resultaat.
Mij is het gelukt met een frisse installatie van Arduino IDE 1.6.5, vervolgens de ESP8266 via boardmanager installeren:
•Start Arduino and open Preferences window.
•Enter http://arduino.esp8266.co...age_esp8266com_index.json into Additional Board Manager URLs field. You can add multiple URLs, separating them with commas.
•Open Boards Manager from Tools > Board menu and install esp8266 platform (and don't forget to select your ESP8266 board from Tools > Board menu after installation).

Daarna in Arduino IDE in de library-manager PubSubClient zoeken en installeren.

Daarna de supersjimmie 'itho' map toevoegen aan de library.

Arduino herstarten, alle board instellingen, com poort goed controleren en compilen.


Jouw foutmeldingen komen van verkeerde versies libraries.


Je kunt daarna beginnen met het aanpassen / uitbouwen van het script van Thinkpad. Die van Thinkpad zou werken met MQTT (bij mij nog niet... :) ), misschien dat je zelf iets werkend kunt krijgen die als webserver werkt.
Je zult het een voorbeeld (zoals http://www.arduinesp.com/wifiwebserver) daarvoor zelf moeten aanpassen.

  • sven_
  • Registratie: mei 2011
  • Laatst online: 16-11 23:21
Nou, succes is geboekt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
WiFi connected
IP address: 192.168.1.14
CC1101_PARTNUM 0
CC1101_VERSION 20
CC1101_MARCSTATE 1
RF setup
Attempting MQTT connection...connected
Message arrived [/itho/in]: high
send
Message arrived [/itho/in]: medium
send
Message arrived [/itho/in]: high
send
Message arrived [/itho/in]: low
send

...op de serial monitor. En het werkt!
Bedankt Thinkpad voor de link naar je HASS config-files. Een indrukwekkende set aan sensoren en automation rules :-)

@Speedy_Andre: ik heb niet de windows installer van Arduino IDE gebruikt, maar gewoon het windows zip bestand. Ergens uitpakken en je hoeft niets te installeren. Ik denk (niet geprobeerd) dat je gewoon hiermee verschillende versies naast elkaar kunt draaien.

  • Speedy-Andre
  • Registratie: maart 2002
  • Laatst online: 12:47

Speedy-Andre

Satio-X10-SxS-ZL-XA

Je moet wat prutsen om het goed te krijgen zeg, de juiste IDE 1.6.9 gebruiken deed het hem :P
Ik kan hem nu besturen door <IP>/low enz. in een browser te typen en heb een meerstanden switch in Domoticz toegevoegd waar ik de commando's mee stuur :*)

https://tweakers.net/ext/f/0VcQ7CstvkLRLlEWEvkfPwfG/full.jpg

Helaas ontbreekt de extra-laag of niet-thuis stand in deze code, die zou onder de Off toets kunnen.
Nu heb ik de timer maar bij Off ondergebracht.
Hopelijk lukt het me om via deze weg een Tcr5000 toe te voegen voor de watermeter, al werkt die wel andersom (bij elke omwenteling een melding in Domoticz krijgen die dan een teller ophoogt).

PVoutput oost west, zuid best! Stookt met 2x Tosh Daiseikai 8 3,5kW, SWW Atlantic Explorer 3 200l. Gasloos sinds aug 2016 Sinds 6-11-2018 5590Wp


Acties:
  • +1Henk 'm!

  • ThinkPad
  • Registratie: juni 2005
  • Laatst online: 12:30

ThinkPad

Moderator Duurzame Energie & Domotica

L460

Iemand toevallig al eens een poging gedaan om een plugin te schrijven voor ESPEasy om de Itho aan te sturen? Zou mooi zijn, dan heb je gelijk een makkelijke webinterface e.d.

Een transmit plugin zoals deze heb ik bekeken, maar mijn C/C++ skills zijn niet voldoende om mijn sketch om te bouwen naar zoiets :P

Gas besparen door CV-tuning | Elektriciteit besparen
Geen (Domoticz) vragen via privébericht die ook via het forum kunnen a.u.b.


Acties:
  • +1Henk 'm!

  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
Als het kunnen opnemen is in de bron dan maken we het samen mooier voor iedereen.
Zo werkt een community.

Edit, huh ik lees het terug en snap niet wat ik zelf tikte...
Ik bedoelde zoiets: Als we het (jouw stuk) kunnen opnemen in de bron dan maken we het samen mooier voor iedereen.

jvdmast wijzigde deze reactie 15-05-2017 21:47 (46%)


Acties:
  • +4Henk 'm!

  • TechApprentice
  • Registratie: juli 2009
  • Laatst online: 14-11 23:48
In 3 library bestanden moeten de extra commando's toegevoegd worden om via de *.ino file aan te kunnen roepen. Ik had eerst geprobeerd om op basis van de library van supersjimmie en het voorbeeld van ThinkPad om de commando's er bij te knutselen, uiteraard aan de hand van de info van Klusjesman. Dat gaf een reboot van mijn NodeMCU bij het away commando maar niet bij de FullPower. Omdat ik niet boven water kreeg waar het aan lag heb ik toen de files van racquemis gepakt (waar de Away al in stond) en daar nog de FullPower aan toegevoegd.

Ik probeer de komende dagen de code wat op te schoonen en kijk of ik het complete pakketje als zip ergens weg zet.

EDIT:
Maar even gelijk gedaan :*)
https://github.com/TechApprentice/IthoEcoFanRFT5modeESP

Ik heb hopelijk de juiste mensen de credits gegeven (ook in de code).
Ik heb gewerkt met Arduino IDE 1.8.1 (voor het geval dat dit iets uitmaakt)

In Domoticz heb ik het nu zo:
IthoSwitchDomoticz

En de configuratie hiervan:
SwitchIthoConfigDomoticz

Ik ben in ieder geval erg blij. 8)

TechApprentice wijzigde deze reactie 19-05-2017 14:35 (34%)
Reden: Waarom uitstellen als het nu ook wel even kon


Acties:
  • +1Henk 'm!

  • Templar
  • Registratie: september 2000
  • Laatst online: 17-11 12:39
quote:
quote:
ThinkPad schreef op zondag 14 mei 2017 @ 17:03:
@Templar @jvdmast Hier op het forum delen lijkt mij ook handiger dan onderling via DM de boel sturen. Helpt de werking van een forum een beetje om zeep ;) Door het hier te plaatsen hebben anderen er ook nog wat aan.
IthoEcoFanRFT.zip van Templar

AUB ook dit document bijwerken indien in het bezit van nieuwe zenders: Overzicht command codes RFT zenders

Templar wijzigde deze reactie 25-05-2017 20:21 (55%)


Acties:
  • +1Henk 'm!

  • Speedy-Andre
  • Registratie: maart 2002
  • Laatst online: 12:47

Speedy-Andre

Satio-X10-SxS-ZL-XA

De Nodemcu heeft een 3,3V uitgang en communiceert ook met 3,3V.
In de IDE (juiste versie kiezen) selecteer je het juiste board en de libraries vindt hij zelf.
Dan de Itho libraries toevoegen, wifi gegevens invullen in de .ino file en compileren/flashen.
Er zijn 6 draden gebruikt voor de CC1101, meer is niet nodig.
De 5V voeding gaat via micro-usb en flashen ook (als de NodeMCu herkend is even de compoort checken).
Ik heb de laatste versie met 5 snelheden gebruikt, al werken er maar 4 met mijn Itho :)
Eventueel kan je kijken of een ander apparaaat met een usb aansluiting permanent aan staat en daar de Nodemcu in prikken als de voeding sterk genoeg is.
Ik heb een camera recorder 24/7 aan en daar zit hij in, wel jammer dat als het ding een keer reboot dat usb dan even uit gaat en de Itho een aanmelding krijgt.

PVoutput oost west, zuid best! Stookt met 2x Tosh Daiseikai 8 3,5kW, SWW Atlantic Explorer 3 200l. Gasloos sinds aug 2016 Sinds 6-11-2018 5590Wp


Acties:
  • +1Henk 'm!

  • Pascal Saul
  • Registratie: augustus 2001
  • Laatst online: 17-11 21:06
quote:
Drawer schreef op woensdag 21 juni 2017 @ 15:20:
Hmm.
En de methode om te linken is simpelweg je Itho van stroom halen en daarna je ESP resetten right? Hoelang blijft die Itho ongeveer in z'n linkmodus staan?
Ik heb dezelfde boel ook net gebouwd en geflashed met de laatste versie van de IDE 18.3...
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
&#11822;
ESP8266 remote for Itho ventilation unit
See https://gathering.tweakers.net/forum/list_messages/1690945 for more information!
Setting up CC1101 module...
CC1101 transmitter is now ready!

Sending command 'join' to Itho ventilation unit...
send
Command 'join' has been sent!

Connecting to wifi-network: <SSID>.....
I am now connected to '<SSID>' and my IP-address is: <IP>

Starting webserver...
Webserver is now running!

Alles werkt hier direct... vanuit de woonkamer zenden naar zolder is geen probleem.

Kabel zijn ongeveer 10CM lang ook. Pin 6 en 7 zijn niet in gebruik van de C1101.

Nu nog even kijken hoe we de boel geïntegreerd gaan aansturen met de rest van de domotica...

Wellicht is/kan ik de webserver nog simpel uit te breiden met wat buttons: low, medium, high, timer * x...

Pascal Saul wijzigde deze reactie 30-06-2017 11:47 (8%)


Acties:
  • +6Henk 'm!

  • ThinkPad
  • Registratie: juni 2005
  • Laatst online: 12:30

ThinkPad

Moderator Duurzame Energie & Domotica

L460

quote:
quazar schreef op woensdag 10 mei 2017 @ 22:33:
[...]
ESPeasy zou voor mij makkelijker werken
[...]
quote:
Speedy-Andre schreef op woensdag 10 mei 2017 @ 23:49:
[...]
nog mooier is het geheel als plugin van EspEasy :)
[...]
Vandaag is jullie geluksdag :*)

Het is mij gelukt om de HTTP variant die ik hier al eens had gemaakt om te vormen tot een plugin voor ESPEasy _/-\o_

Zie mijn Bitbucket: _P054_Itho.ino en hieronder geplakt als backup.
C++:
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
//#######################################################################################################
//############################## Plugin 054: Itho ventilation unit 868Mhz remote ########################
//#######################################################################################################

// List of commands:
// JOIN to join ESP8266 with Itho ventilation unit
// LOW - set Itho ventilation unit to lowest speed
// MEDIUM - set Itho ventilation unit to medium speed
// HIGH - set Itho ventilation unit to max speed

// Usage (not case sensitive):
// http://ip/control?cmd=ITHOSEND,join
// http://ip/control?cmd=ITHOSEND,low
// http://ip/control?cmd=ITHOSEND,medium
// http://ip/control?cmd=ITHOSEND,high


//This code needs the library made by 'supersjimmie': https://github.com/supersjimmie/IthoEcoFanRFT/tree/master/Master/Itho
// A CC1101 868Mhz transmitter is needed
// See https://gathering.tweakers.net/forum/list_messages/1690945 for more information

#include <SPI.h>
#include "IthoCC1101.h"
#include "IthoPacket.h"
IthoCC1101 rf;
IthoPacket packet;

#define PLUGIN_054
#define PLUGIN_ID_054         54
#define PLUGIN_NAME_054       "Itho ventilation remote"
#define PLUGIN_VALUENAME1_054 ""
boolean Plugin_054(byte function, struct EventStruct *event, String& string)
{
    boolean success = false;

    switch (function)
    {

        case PLUGIN_DEVICE_ADD:
        {
            Device[++deviceCount].Number = PLUGIN_ID_054;
            break;
        }

        case PLUGIN_GET_DEVICENAME:
        {
            string = F(PLUGIN_NAME_054);
            break;
        }

        case PLUGIN_GET_DEVICEVALUENAMES:
        {
            break;
        }

        case PLUGIN_INIT:
        {
            rf.init();
            //rf.sendCommand(IthoJoin);
            addLog(LOG_LEVEL_INFO, F("CC1101 868Mhz transmitter initialized"));
            success = true;
            break;
        }

        case PLUGIN_WRITE: {

            String tmpString = string;

            String cmd = parseString(tmpString, 1);
            String param1 = parseString(tmpString, 2);


            if (cmd.equalsIgnoreCase(F("ITHOSEND")))
            {

                if (param1.equalsIgnoreCase(F("join")))
                {
                    rf.sendCommand(IthoJoin);
                    addLog(LOG_LEVEL_INFO, F("Sent command for 'join' to Itho unit"));
                    printWebString += F("Sent command for 'join' to Itho unit");
                    success = true;
                }

                if (param1.equalsIgnoreCase(F("leave")))
                {
                    rf.sendCommand(IthoLeave);
                    addLog(LOG_LEVEL_INFO, F("Sent command for 'leave' to Itho unit"));
                    printWebString += F("Sent command for 'leave' to Itho unit");
                    success = true;
                }

                if (param1.equalsIgnoreCase(F("low")))
                {
                    rf.sendCommand(IthoLow);
                    addLog(LOG_LEVEL_INFO, F("Sent command for 'low speed' to Itho unit"));
                    printWebString += F("Sent command for 'low speed' to Itho unit");
                    success = true;
                }

                if (param1.equalsIgnoreCase(F("medium")))
                {
                    rf.sendCommand(IthoMedium);
                    addLog(LOG_LEVEL_INFO, F("Sent command for 'medium speed' to Itho unit"));
                    printWebString += F("Sent command for 'medium speed' to Itho unit");
                    success = true;
                }

                if (param1.equalsIgnoreCase(F("high")))
                {
                    rf.sendCommand(IthoFull);
                    addLog(LOG_LEVEL_INFO, F("Sent command for 'full speed' to Itho unit"));
                    printWebString += F("Sent command for 'full speed' to Itho unit");
                    success = true;
                }

                if (param1.equalsIgnoreCase(F("timer1")))
                {
                    rf.sendCommand(IthoTimer1);
                    addLog(LOG_LEVEL_INFO, F("Sent command for 'timer 1' to Itho unit"));
                    printWebString += F("Sent command for 'timer 1' to Itho unit");
                    success = true;
                }               

                if (param1.equalsIgnoreCase(F("timer2")))
                {
                    rf.sendCommand(IthoTimer2);
                    addLog(LOG_LEVEL_INFO, F("Sent command for 'timer 2' to Itho unit"));
                    printWebString += F("Sent command for 'timer 2' to Itho unit");
                    success = true;
                }       

                if (param1.equalsIgnoreCase(F("timer3")))
                {
                    rf.sendCommand(IthoTimer3);
                    addLog(LOG_LEVEL_INFO, F("Sent command for 'timer 3' to Itho unit"));
                    printWebString += F("Sent command for 'timer 3' to Itho unit");
                    success = true;
                }   

            }
        }

    break;
    }
    return success;
}

HTTP:
http://192.168.6.25/control?cmd=ITHOSEND,join
http://192.168.6.25/control?cmd=ITHOSEND,low
http://192.168.6.25/control?cmd=ITHOSEND,medium
http://192.168.6.25/control?cmd=ITHOSEND,high

MQTT:
mosquitto_pub -t /IthoRemote/cmd -m ithosend,join
mosquitto_pub -t /IthoRemote/cmd -m ithosend,low
mosquitto_pub -t /IthoRemote/cmd -m ithosend,medium
mosquitto_pub -t /IthoRemote/cmd -m ithosend,high

(mijn devicename is 'IthoRemote', kun je instellen via tabje 'Config' in de WebGUI).
Helaas nog niet kunnen ontdekken hoe ik kan zorgen voor terugkoppeling via MQTT.

Ik ben geen C/C++ programmeur, dus het zou kunnen dat er wat bugs in zitten. Uiteraard heb je wel de library van supersjimmie nodig.

Voor de luie mensen, hier een kant-en-klare binary: IthoRemote_ESPEasy2.0.bin (gebaseerd op ESPEasy 'Release v2.0.0-dev10') zodat je de Arduino IDE en libraries e.d. niet nodig hebt. Flashen kan met deze tools (uitpakken, .bin in dezelfde folder zetten en dan FlashESP8266.exe uitvoeren)

Enjoy! _/-\o_

ThinkPad wijzigde deze reactie 01-07-2017 15:22 (11%)

Gas besparen door CV-tuning | Elektriciteit besparen
Geen (Domoticz) vragen via privébericht die ook via het forum kunnen a.u.b.


Acties:
  • +1Henk 'm!

  • ThinkPad
  • Registratie: juni 2005
  • Laatst online: 12:30

ThinkPad

Moderator Duurzame Energie & Domotica

L460

@grote_oever Pak gewoon de .bin onderaan m'n post hierboven en knal die erop met de flashtools uit mijn post. Hoef je niks te compilen of libraries bij elkaar te zoeken. WiFi instellen kan dan via de AP modus die ESPEasy opzet als het goed is. Of op deze manier even via de Arduino Serial Monitor je credentials erin kloppen.

Gas besparen door CV-tuning | Elektriciteit besparen
Geen (Domoticz) vragen via privébericht die ook via het forum kunnen a.u.b.


Acties:
  • +1Henk 'm!

  • grote_oever
  • Registratie: augustus 2002
  • Laatst online: 11:59
quote:
ThinkPad schreef op zaterdag 1 juli 2017 @ 15:10:
@grote_oever Pak gewoon de .bin onderaan m'n post en knal die erop met de flashtools uit mijn post. Hoef je niks te compilen of libraries bij elkaar te zoeken. WiFi instellen kan dan via de AP modus die ESPEasy opzet als het goed is. Of op deze manier even via de Arduino Serial Monitor je credentials erin kloppen.
Bedankt, ga ik eens proberen. Heb overigens fout gemaakt bij github om de bestanden op te slaan als rechtermuisknop en dan opslaan. wist niet dat de HTML pagina opgeslagen werd ipv library :)

[edit]

@ThinkPad Bedankt, jou oplossing werkt in één keer. Na de flash kun je inderdaad een Wifi selecteren ESP. Daarna kun je wifi configureren. Volgens mij is de devicename trouwens "newdevice".

grote_oever wijzigde deze reactie 01-07-2017 15:34 (12%)


Acties:
  • +1Henk 'm!

  • Pascal Saul
  • Registratie: augustus 2001
  • Laatst online: 17-11 21:06
Zover ik weet moet je inderdaad ook maar een keer joinen...

Wellicht dat het niet goed gaat als de nodemcu geen wifi heeft bij het opstarten ofzo...

Njah, goed werk iig :)

En timer1 t/m 3 is 10,20,30 minuten full power btw... ;)

Pascal Saul wijzigde deze reactie 02-07-2017 12:14 (47%)


Acties:
  • +1Henk 'm!

  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
quote:
ThinkPad schreef op zaterdag 1 juli 2017 @ 14:56:
Hij doet nu join / low / medium / high
De rest zou misschien wel kunnen, staat dat al in de library van supersjimmie?
Ik zie wel een Timer1, Timer2, Timer3 maar heb geen idee wat dat doet. Heb ze wel toegevoegd, net als de 'leave', die had ik er ook nog niet in staan.

Misschien heeft supersjimmie (@jvdmast ) daar een antwoord op? Zitten die codes die @Speedy-Andre noemt in jouw library?
De timers zijn overgenomen van een remote die die functie heeft.
Daarop zit een timer-knop die bij 1, 2 of 3x achter elkaar indrukken respectievelijk timer1, 2, 3 verzendt. Het resultaat daarvan is dat de fan iets van 10, 20 of 30 minuten naar high gaat en dan vanzelf weer terug naar de vorige stand. Doorgaans handig in de badkamer (of wc).

Andere codes heb ik eens mee gespeeld maar die hadden bij mij andere resultaten dan gewenst.

Acties:
  • +1Henk 'm!

  • ThinkPad
  • Registratie: juni 2005
  • Laatst online: 12:30

ThinkPad

Moderator Duurzame Energie & Domotica

L460

Geld teruggevraagd omdat die gaatjes maar half zijn? Spoiler: dat hoort zo :P Heeft de mijne ook.

Ik heb de transmitter op een NodeMCU aan het werk, voor een kennis heb ik er ook eentje gemaakt met een Wemos D1 Mini en dat werkt ook prima.

Gas besparen door CV-tuning | Elektriciteit besparen
Geen (Domoticz) vragen via privébericht die ook via het forum kunnen a.u.b.


Acties:
  • +1Henk 'm!

  • Speedy-Andre
  • Registratie: maart 2002
  • Laatst online: 12:47

Speedy-Andre

Satio-X10-SxS-ZL-XA

PVoutput oost west, zuid best! Stookt met 2x Tosh Daiseikai 8 3,5kW, SWW Atlantic Explorer 3 200l. Gasloos sinds aug 2016 Sinds 6-11-2018 5590Wp


Acties:
  • +1Henk 'm!

  • grote_oever
  • Registratie: augustus 2002
  • Laatst online: 11:59
quote:
balk schreef op vrijdag 7 juli 2017 @ 12:38:
[...]

>:)
yep, even gecheckt en het is echt zo :) halve gaatjes zijn maar vervelend.

Met NodeMCU werkt het. Volgende week kijk ik naar de Wemos; ik ben wel benieuwd.
Zelf heb ik ook de halve gaatjes, Maar dat is prima te doen. Bij solderen moet je de halve gaatjes eerst dicht maken met tin. Vervolgens leg je draad erop en maak je draad warm met soldeerbout. Draadje valt dan keurig in de tin en blijft prima vast zitten.

Bij het eerste halve gaatjes was ik ook aan het kloten om her goed te krijgen. Totdat ik bovenstaande deed. Heb zelfs de twee gaatjes gesoldeerd die helemaal niet aangesloten moeten zijn.

Conclussie; laatje nier afschrikken door de halve gaatjes. Deze zijn prima te solderen

  • balk
  • Registratie: januari 2000
  • Laatst online: 17-11 13:04
quote:
jvdmast schreef op maandag 12 september 2016 @ 09:28:
[...]

Houd er sowieso rekening mee dat, als je wel wil luisteren naar een eventuele verzonden packet (code, button-press), dit vrijwel realtime moet gebeuren. Er mag dus vrijwel geen vertraging in de loop() zitten.
De cc1101 heeft maar een kleine buffer én de codes worden in 2 verschillende modulaties verzonden waardoor de code tijdens verzenden/ontvangen moet wisselen. (lastig uit te leggen)

Ik (die "supersjimmie" in die code) ben momenteel wel aan het testen om eea interrupt gedreven werkend te krijgen maar dat valt niet mee...
Ik ben op de helft van mijn projectje. Ik kan wel de Itho box aansturen maar omwille van de WAF will ik graag dat als de ventilatie via het paneel op de muur wordt aangestuurd, dit commando belangrijker is dan wat Home Assistant dan ook denkt wat het moet zijn.

Ik heb zelf op basis van eea (en de @TechApprentice code) iets in elkaar gedraaid. Features:
luistert naar MQTT topics
Geeft elke 5 seconden een teken van leven en heeft een last will.
`mosquitto_pub -t /hass/itho -m high` stuurt bijvoorbeeld de unit op hoog vermogen

Met deze code kan ik wel commando's opvangen van de muurunit. Maar in die code zit een
code:
1
while (1==1)

waardoor deze altijd in luistermodus blijft. Ik kan dus met de ene versie alleen versturen en met de andere alleen luisteren.

Heeft iemand het toevallig voor elkaar om zowel naar "traditioneel" verstuurde commando's te luisteren, en tegelijkertijd lurken op een mqtt kanaal voor het geval daar wat langs komt.
- luister naar 833 MHz commando's
- luister naar MQTT commando's
- stuur commando's naar de Itho box
- stuur MQTT status updates



zoals je uit mijn in elkaar gehobbyde code up zult maken ben ik geen programmeur. Ik kan wel logisch nadenken dus ik kom een heel eind. Maar iets zoals de klusjesmannen en supersjimmies in elkaar gezet hebben snappen laat staan produceren kan ik echt niet :) _/-\o_

  • Pascal Saul
  • Registratie: augustus 2001
  • Laatst online: 17-11 21:06
De laatste tijd heb ik hier ook al over zitten denken. Ik mis ook het 'State' topic als ik de MV handmatig bedien. Het zou mooi zijn als we het voor elkaar kunnen krijgen om van 1 weg communicate een 2 weg systeem te kunnen maken zodat we kunnen zien op welke stand de MV nu draait. Ik wacht met smart op de oplossing als deze bestaat :)

  • Ierlandfan
  • Registratie: augustus 2002
  • Laatst online: 15-11 18:08
@jvdmast
quote:
Ik heb in mijn code, die een groot web van allerlei eigen home-dingetjes is, zowel de mogelijkheid om een snelheid te verzenden als om constant te luisteren naar de andere "fysieke zender".
Dat is echter dusdanig door mijn grote project verweven dat ik die code niet zo even pasklaar kan posten.

  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
quote:
Oef, in grove stappen...
Een boolean dit bijhoudt of er een packet is ontvangen:
C++:
1
bool ITHOhasPacket = false;

Dan een interrupt aan de cc1101 interrupt pin:
C++:
1
2
3
4
void setup() {
//...
  attachInterrupt(ITHO_IRQ_PIN, ITHOinterrupt, RISING);
}

In de loop kijk ik dan regelmatig of de boolean true is geworden:
C++:
1
2
3
4
5
void loop() {
// do whatever you want
  if (ITHOhasPacket) {
    ITHOshowPacket();
}

Omdat de cc1101 interrupt pin al hoog wordt zodra er een bitje binnenkomt heb ik een korte vertraging voordat het uitlezen wordt gestart:
C++:
1
2
3
inline static void ICACHE_RAM_ATTR  __attribute__((always_inline)) ITHOinterrupt() {
  ITHOticker.once_ms(10, ITHOcheck);
}

Dan wordt de data uitgelezen en in wat variabelen gezet(die zal je zelf even bij elkaar moeten schrapen):
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
void ITHOcheck() {
  if (rf.checkForNewPacket()) {
    IthoCommand cmd = rf.getLastCommand();
    if (++RFTcommandpos > 2) RFTcommandpos = 0;  // store information in next entry of ringbuffers
    RFTcommand[RFTcommandpos] = cmd;
    RFTRSSI[RFTcommandpos]    = rf.ReadRSSI();
    bool chk = rf.checkID(RFTid);
    RFTidChk[RFTcommandpos]   = chk;
    if ((cmd != IthoUnknown) && chk) {  // only act on good cmd and correct id.
      ITHOhasPacket = true;
    }
  }
}

Omdat de itho zender 3 keer hetzelfde verstuurt en die 3 niet altijd goed worden ontvangen, heb ik een controle-functie:
C++:
1
2
3
4
5
6
7
8
9
10
uint8_t findRFTlastCommand() {
  if (RFTcommand[RFTcommandpos] != IthoUnknown)               return RFTcommandpos;//RFTcommand[RFTcommandpos];
  if ((RFTcommandpos == 0) && (RFTcommand[2] != IthoUnknown)) return 2;//RFTcommand[2];
  if ((RFTcommandpos == 0) && (RFTcommand[1] != IthoUnknown)) return 1;//RFTcommand[1];
  if ((RFTcommandpos == 1) && (RFTcommand[0] != IthoUnknown)) return 0;//RFTcommand[0];
  if ((RFTcommandpos == 1) && (RFTcommand[2] != IthoUnknown)) return 2;//RFTcommand[2];
  if ((RFTcommandpos == 2) && (RFTcommand[1] != IthoUnknown)) return 1;//RFTcommand[1];
  if ((RFTcommandpos == 2) && (RFTcommand[0] != IthoUnknown)) return 0;//RFTcommand[0];
  return -1;
}

En een functie om de ontvangen code weer te geven:
C++:
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
void ITHOshowPacket()    {
  ITHOhasPacket = false;
  uint8_t goodpos = findRFTlastCommand();
  if (goodpos != -1)  RFTlastCommand = RFTcommand[goodpos];
  else                RFTlastCommand = IthoUnknown;
  //show command
  Serial.print(F("RFT Current Pos: "));
  Serial.print(RFTcommandpos);
  Serial.print(F(", Good Pos: "));
  Serial.println(goodpos);
  Serial.print(F("Stored 3 commands: "));
  Serial.print(RFTcommand[0]);
  Serial.print(F(" "));
  Serial.print(RFTcommand[1]);
  Serial.print(F(" "));
  Serial.print(RFTcommand[2]);
  Serial.print(F(" / Stored 3 RSSI's:     "));
  Serial.print(RFTRSSI[0]);
  Serial.print(F(" "));
  Serial.print(RFTRSSI[1]);
  Serial.print(F(" "));
  Serial.print(RFTRSSI[2]);
  Serial.print(F(" / Stored 3 ID checks: "));
  Serial.print(RFTidChk[0]);
  Serial.print(F(" "));
  Serial.print(RFTidChk[1]);
  Serial.print(F(" "));
  Serial.print(RFTidChk[2]);
  Serial.print(F(" / Last ID: "));
  Serial.print(rf.getLastIDstr());

  Serial.print(F(" / Command = "));
  switch (RFTlastCommand) {
    case IthoUnknown:
      Serial.print(F("unknown\n"));
      break;
    case IthoLow:
      Serial.print(F("low\n"));
      RFTstate = RFTlastCommand;
      break;
    case IthoMedium:
      Serial.print(F("medium\n"));
      RFTstate = RFTlastCommand;
      break;
    case IthoFull:
      Serial.print(F("full\n"));
      RFTstate = RFTlastCommand;
      break;
    case IthoTimer1:
      Serial.print(F("timer1\n"));
      RFTstate = RFTlastCommand;
      break;
    case IthoTimer2:
      Serial.print(F("timer2\n"));
      RFTstate = RFTlastCommand;
      break;
    case IthoTimer3:
      Serial.print(F("timer3\n"));
      RFTstate = RFTlastCommand;
      break;
    case IthoJoin:
      Serial.print(F("join\n"));
      break;
    case IthoLeave:
      Serial.print(F("leave\n"));
      break;
  }
}

Dat zal het ongeveer wel zijn.
Er wordt gebruikgemaakt van 3 functies die ik in de library heb zitten:
rf.checkForNewPacket()
rf.getLastCommand()
rf.checkID(RFTid)
rf.ReadRSSI()
Die staan in de volgende post.

  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
De functies in de library:

In de IthoCC1101.cpp:
C++:
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
bool IthoCC1101::checkForNewPacket()
{
    if (receiveData(&inMessage2, 42))
    {
        parseMessageCommand();
        initReceiveMessage2(IthoUnknown);
        return true;
    }   
    
    return false;
}

uint8_t IthoCC1101::ReadRSSI()
{
  uint8_t rssi = 0;
  uint8_t value = 0;

  rssi = (readRegister(CC1101_RSSI, CC1101_STATUS_REGISTER));

  if (rssi >= 128)
  {
    value = 255 - rssi;
    value /= 2;
    value += 74;
  }
  else
  {
    value = rssi / 2;
    value += 74;
  }
  return(value);
}

bool IthoCC1101::checkID(const uint8_t *id)
{
    for (uint8_t i=0; i<8;i++)
        if (id[i] != inIthoPacket.deviceId[i])
            return false;
    return true;
}

String IthoCC1101::getLastIDstr() {
    String str;
    for (uint8_t i=0; i<8;i++) {
        str += String(inIthoPacket.deviceId[i], HEX);
        if (i<7) str += "-";
    }
    return str;
}

En in de .h file in het public deel van de IthoCC1101 class:
C++:
1
2
3
4
5
6
7
8
9
class IthoCC1101 : protected CC1101
public:
        bool checkForNewPacket();                                               //check RX fifo for new data
        IthoPacket getLastPacket() { return inIthoPacket; }                     //retrieve last received/parsed packet from remote
        IthoCommand getLastCommand() { return inIthoPacket.command; }                       //retrieve last received/parsed command from remote
        uint8_t getLastInCounter() { return inIthoPacket.counter; }                     //retrieve last received/parsed command from remote
        uint8_t ReadRSSI();
        bool checkID(const uint8_t *id);
        String getLastIDstr();


  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
quote:
rorie schreef op dinsdag 21 november 2017 @ 20:38:
@jvdmast Volgens mij heb ik wel eens gelezen hier dat de C++ code al standaard 3 x een pakketje verstuurd, bijvoorbeeld bij een low of high, klopt dit?
Klopt, net als de originele remote verzendt de code ook 3x hetzelfde packet.
https://github.com/supers...ter/Itho/IthoCC1101.h#L84
C++:
1
        IthoCC1101(uint8_t counter = 0, uint8_t sendTries = 3);     //set initial counter value

https://github.com/supers.../Itho/IthoCC1101.cpp#L766
C++:
1
    uint8_t maxTries = sendTries;

https://github.com/supers.../Itho/IthoCC1101.cpp#L799
C++:
1
    for (int i=0;i<maxTries;i++)

Ik weet uit de praktijk dat 1x vaak misgaat en dat zelfs 2x niet ideaal is.
Mijn recieve-code ontvangt er doorgaans ook maar 1 of 2 vanaf de originele remote.

  • ThinkPad
  • Registratie: juni 2005
  • Laatst online: 12:30

ThinkPad

Moderator Duurzame Energie & Domotica

L460

@iMars Probeer het eens met de kant-en-klare binary die ik destijds had gepost.
Wellicht doet die het beter, volgens mij heb ik daar alle overbodige plugins uit gestript.

Verder helaas niet echt een idee, ben niet iemand die dagelijks aan het programmeren is, was meer op goed geluk en met logisch verstand wat dingen proberen :P

Gas besparen door CV-tuning | Elektriciteit besparen
Geen (Domoticz) vragen via privébericht die ook via het forum kunnen a.u.b.


  • iMars
  • Registratie: augustus 2001
  • Laatst online: 17-11 21:52
@ThinkPad Hoe heb jij je mqtt ingesteld? Want wat ik ook publish, alleen via de url reageert ie.

Edit: veranderd naar OpenHAB MQTT:
mosquitto_pub -u *** -P *** -t '/ithoremote/cmd' -m 'ITHOSEND,high' 

Nu werkt het wel :9

Edit 2:

_/-\o_

iMars wijzigde deze reactie 06-12-2017 22:35 (58%)


  • arnord
  • Registratie: december 2010
  • Laatst online: 05-11 16:54
@ThinkPad bedankt voor je handige sketches; heb het na een avondje "knutselen" werkend gekregen in mijn openhab2 domotica.

  • iMars
  • Registratie: augustus 2001
  • Laatst online: 17-11 21:52
quote:
vso schreef op zaterdag 9 december 2017 @ 23:43:
Misschien heb ik er overheen gelezen, maar wat heb ik nu nodig om dit werkend te krijgen (hw)
en moet ik nog iets doen aan de ventilatie box ?

De software is me redelijk duidelijk thx guys :)
Koppelen aan Itho is hetzelfde procedure als een originele zender koppelen ;)
quote:
arnord schreef op zondag 10 december 2017 @ 10:50:
Is het nu ook zo dat als ik mij sketch iets wil aanpassen (timer1,timer2,timer3) dat ik niet opnieuw hoeft te "joinen" als nieuwe sketch actief is?

Of moet ik met huidige config nog een "leave" actie doen?
Timer, daar gebruik ik mijn domotica voor ;) Ik heb nu low/mid/high, meer heb ik niet nodig ;)

iMars wijzigde deze reactie 10-12-2017 17:25 (21%)


  • balk
  • Registratie: januari 2000
  • Laatst online: 17-11 13:04
quote:
vso schreef op maandag 11 december 2017 @ 16:07:
Hebben jullie ook kleppen in de ventilatie aangebracht ? ik denk hierbij aan het gericht(er) ventileren ..

zo ja welke units en hoe stuur je die aan ? of moet ik een ander topic ff kijken ?
Ik heb deze in bestelling, met deze Servo. Schakelen wil ik gaan doen met een Sonoff dual.

  • balk
  • Registratie: januari 2000
  • Laatst online: 17-11 13:04
quote:
vso schreef op donderdag 14 december 2017 @ 09:59:
[...]

Nu ik vraag me af of het "betrouwbaarder" is ..

fyi denk niet dat je het 1,2,3 zelf bouwd .. maar een vraag prijs van 40,- lijkt mij stukken reeler . tis lucht wat je verplaatst niet vloeistof met 60bar oid ..
Helemaal waar :) maar ik had een meevallertje met cryptos en geen zin om te knutselen dus ik dacht: vooruit!

Overigens, qua zelfbouw zou dit nog kunnen

  • jodur
  • Registratie: mei 2007
  • Laatst online: 17-11 21:59
quote:
jvdmast schreef op woensdag 3 januari 2018 @ 15:00:
[...]

Het zal volgens mij ook wel blijven werken als je dat hele do { ... } while ... block eruit haalt en het vervangt door een delay(). Dit blokje voorkomt dat "te snel" finishTransfer wordt aangeroepen. Hoe lang je delay dan moet zijn is een beetje gokken, een paar msec moet al voldoen. (los van of het netjes is)
Je zou zelfs de while wat netter kunnen maken door er een timeout in te bouwen. ;)
Of, maar dat lost jouw probleem niet op, een yield() in de loop zetten. Dat voorkomt een wdt reset maar als de marcstate niet goed wordt dan zit je nog vast in de loop.

Mijn eigen ervaring is een wdt reset als de boel niet goed is aangesloten. Waarom er bij jou geen wdt reset optreedt weeet ik dan ook niet. Maar dat vind ik ook niet heel relevant.
Heb de C1101 nu opnieuw aangesloten en werkt het !

  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
quote:
jodur schreef op donderdag 4 januari 2018 @ 21:06:
waar is de define van ITHO_IRQ_PIN ?
Waar jij die neerzet. ;)
Bij mij staan dergelijke #define regels bovenaan in de algehele .ino file.
C++:
1
#define ITHO_IRQ_PIN    D2

quote:
jodur schreef op donderdag 4 januari 2018 @ 22:59:
Ik probeer het ontvangen nu ook op interrupt basis, zodat ik ook een state topic kan toevoegen aan de ESP Easy plugin zoals deze al is opgezet door @ThinkPad

Als ik de suggesties doorlees van @jvdmast is onderstaande stappen essentiel

1 : Zet de interupt aan: voor ontvangen => writeRegister(CC1101_IOCFG2 ,0x00);
2: Koppel ISR (Interrupt service routine aan Pin? ) (zie mijn vraag voor ITH_IRQ_PIN)

Gebruik je hier de GDO2 pin voor van de c1101? (wordt in orginele code van jvdmast niet aangesloten?) en moet ik deze dan op een vrije input aansluiten op de ESP8266 en is dit dan de pin die ik moet opgeven bij attachInterrupt?

[EDIT 5-01-2018]

Ben inmiddels al verder, krijg nu netjes een interrupt als er nieuwe data ontvangen is, alleen het verwerken van de packagedata gaat nog niet goed, moet nog ff verder duiken in de SPI communicatie met de CC1101

@jvdmast kan misschien nog wel een zet gebruiken in de goede richting! :? :?
Momenteel ben ik een catch-up aan het maken om nog eens te proberen mijn ITHO van standby en de dikke Full te voorzien. In tegenstelling tot bij anderen, gaat de mijne in een soort interval ipv standby of full. Maar wellicht ondersteunt mijn fan gewoon die standen niet.

Mijn plan is om zeer binnenkort mijn laatste versie van mijn versie van de library online te zetten, waar niet alleen die standby/full zit, maar ook zaken zoals het ontvangen via een interrupt.

Maar inderdaad, hier gaat de GDO2 (cc1101 pin 6) naar een vrije pin, die dan als IRQ wordt gebruikt.

  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
quote:
2018 _/-\o_

  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
O-)
Oke, oke... Voor wie durft, de laatste versie van de library staat op mijn github.
https://github.com/supersjimmie/IthoEcoFanRFT
Ik heb alleen nog geen nieuwe .ino om de nieuwe functionaliteiten te demo-en.
Je zal het dus voorlopig zelf moeten uitvogelen.
C++:
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
#define ITHO_IRQ_PIN    D2

#include <Ticker.h>

void setup(){
  attachInterrupt(ITHO_IRQ_PIN, ITHOinterrupt, RISING);
}

inline static void ICACHE_RAM_ATTR  __attribute__((always_inline)) ITHOinterrupt() {
  ITHOticker.once_ms(10, ITHOcheck);
}

void ITHOcheck() {
  if (rf.checkForNewPacket()) {
    IthoCommand cmd = rf.getLastCommand();
    if (++RFTcommandpos > 2) RFTcommandpos = 0;  // store information in next entry of ringbuffers
    RFTcommand[RFTcommandpos] = cmd;
    RFTRSSI[RFTcommandpos]    = rf.ReadRSSI();
    bool chk = rf.checkID(RFTid);
    RFTidChk[RFTcommandpos]   = chk;
    if ((cmd != IthoUnknown) && chk) {  // only act on good cmd and correct id.
      ITHOhasPacket = true;
    }
  }
}

En dan nog "a whole bunch" aan variabelen die je nog even zelf moet declareren, zoals o.a.:
C++:
1
2
3
4
5
6
7
8
IthoCommand RFTcommand[3] = {IthoUnknown, IthoUnknown, IthoUnknown};
byte RFTRSSI[3] = {0, 0, 0};
byte RFTcommandpos = 0;
IthoCommand RFTlastCommand = IthoLow;
IthoCommand RFTstate = IthoUnknown;
IthoCommand savedRFTstate = IthoUnknown;
const uint8_t RFTid[] = {106, 170, 106, 101, 154, 107, 154, 86}; // my ID
bool RFTidChk[3] = {false, false, false};

Ik gebruik de Ticker library om een korte vertraging in te bouwen tussen de interrupt en het ophalen van de gegevens. Dat is nodig omdat de interrupt al op het eerste bitje verschijnt en er dan nog even gewacht moet worden op de rest van het packet. Persoonlijk vond ik het via de Ticker elegant genoeg...

jvdmast wijzigde deze reactie 05-01-2018 19:04 (79%)
Reden: voorbeeldcode toegevoegd


  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
@jodur werken bij jou de standby en full ook naar behoren? want dan weet ik dat de code klopt en ik hier een issue met mijn fan zelf heb...

Ik wil binnenkort een beknopte .ino example maken waarin ook het interrupt-gedreven ontvangen werkt.
(en dus ook de ontvangen info netjes weergeeft)
Edit: ow dat heb jij al. :)
Edit2: ik ga wellicht nog toevoegen om de 3 verzonden packets te filteren om fout onvangen packets eruit te halen en toch de goede te zien.

jvdmast wijzigde deze reactie 06-01-2018 14:20 (30%)


  • Ierlandfan
  • Registratie: augustus 2002
  • Laatst online: 15-11 18:08
Het werkt!! (Als in ook bij mij) Alle andere versies werkten niet en deze werkte meteen. Wow! Heel hartelijk bedankt voor de interrupt driven versie, dit was voor mij de enige die werkt! Medium, low, high, werken allemaal, (1tje wordt nog niet herkend maar is niet zo'n probleem) ik zie zelfs een aantal ander remotes voorbij komen (Of dit is mijn badkamer of Co2 meter van Itho ook) Helemaal top!

  • jodur
  • Registratie: mei 2007
  • Laatst online: 17-11 21:59
quote:
ThinkPad schreef op zaterdag 6 januari 2018 @ 15:00:
[...]

Helaas. Ik heb geen remotes die ik zou willen ontvangen. Ben allang blij dat het versturen werkt, dat heeft mij al meerdere weekenden gekost om via ESPEasy werkend te krijgen :P
Don't worry, heb al een ESP Easy versie draaien die kan zenden en ontvangen (op interrupt basis) en gewoon gecombineerd kan worden met alle andere plugins (b.v. DHT22 voor temperatuur en vocht).

Tip: Las in de wiki van ESPEASY dat je ook rules kan toevoegen, wat dus betekend dat je b.v. je Fan kan aansturen op basis van het vochtpercentage van de DHT22. Heb dit zelf nog niet getest, want ik doe alle automation in home-assistant.

Zal eerdaags de source uploaden naar GIT-HUB en de link hier posten. Zal er ook een klant en klare binary aan toevoegen voor de "codeless people".

Voor MQTT zijn er in eerste instantie 2 topics die gepublished worden: <State> en <Timer>

De Timer is een "estimate" van de elapsed time, indien een hardwarematige timer van de Fan is gestart.

State Topics:
code:
1
2
3
4
5
6
7
8
State 0: => Standby?
State 1: => Low
State 2: => Medium
State 3: => High
State 4: => Full ?
State 10:=> Timer1
State 20: => Timer 2
State 30: =>Timer 3

Ik moet de code nog bijschaven, zoals:
- MQTT transmit reductie (Wordt nu cyclisch data verstuurd, met dezelfde info, wil dit reduceren)
- configuratie interrupt pin
- configuratie bekende remotes (zodat alleen op bekende remote wordt gereageerd)
- MQTT Topic toevoegen: last_controlled_by <id-remote>

@jvdmast In jouw code filter je maar op één remote toch? Dit zal een array van remotes moeten zijn want er zijn natuurlijk mensen met meerdere remotes voor één Fan (b.v. Keuken, Badkamer en WC?)

Met name m.b.t. laatste punt zit nog wat uitzoekwerk, omdat er nog weinig voorbeelden zijn met vrije "String velden" die worden opgeslagen, zodat niet naar elke reboot, dit opnieuw moet worden ingevuld.
Ook het aantal remotes is een variabele dit configureerbaar moet zijn
Helaas kent Arduino en dus ESPEASY geen DWORD (64 bits) anders hadden we het ID eenvoudig kunnen opslaan.
Bij ESPEASY moet alles configureerbaar zijn. ;)

@ThinkPad Ik heb uiteraard jouw plugin als opstapje gebruikt en zal dit ook in de bron vermelden!

Alle hulde gaat naar @jvdmast _/-\o_ en voorgangers, b.v. diegene die met een RFSniffer en/of logic analyzer het protocol hebben ontrafeld.

jodur wijzigde deze reactie 06-01-2018 17:55 (10%)


Acties:
  • +1Henk 'm!

  • jodur
  • Registratie: mei 2007
  • Laatst online: 17-11 21:59
@jvdmast

Hierbij de "confirm" van mijn zijde dat de standy en Full commando's bij mij werken.

Ik kan geen verschil merken tussen Low en standby, maar waarschijnlijk hebben ze de potmeter helemaal terug gedraaid diebij de stand low hoort. (Heb de IHTO box alleen voor ventilatie badkamer)

Tussen High en Full zit nog wel een duidelijk verschil.

Het experimenteren met bitjes "klinkt" mij teveel als trial en error. Jammer dat nog niet exact het protocol "ontrafelt" is. Maar ben blij en heb resprect dat jullie al zover zijn gekomen.

Mijn buren zijn geen "tweakers",dus de kans dat hun met deze code hun Fan gaan sturen is erg klein.

jodur wijzigde deze reactie 07-01-2018 20:48 (8%)


  • jodur
  • Registratie: mei 2007
  • Laatst online: 17-11 21:59
Allen, hierbij de first release van mijn ESP Easy plugin die ook commandos "ontvangt" van bestaande remotes. :)F

Lees eerst de readme.md door voor je vragen stelt.

https://github.com/jodur/ESPEASY_Plugin_ITHO

Ik heb heb nog geen duurtesten gedaan en heb hem maar kunnen testen met 1 RF remote, maar dat kan niet het probleem zijn.

N.B. er is ook een binary toegevoegd die je direct kan flashen!

Hoor graag jullie bevindingen!

  • demanditho
  • Registratie: januari 2018
  • Laatst online: 22-09 21:08
Heeft er iemand kunnen koppelen dan met een demand of quality flow systeem? Deze werken met de zenders van type 536-0146

  • jodur
  • Registratie: mei 2007
  • Laatst online: 17-11 21:59
Voor diegene die homeassistant gebruiken en mijn ESP_EASY plugin. :)F



Hieronder de home assistant config scripts:
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
sensor:
  - platform: mqtt
    name: Tijd
    state_topic: "/ESP_Easy/Fan/Timer"
    value_template: "{{value}}"
    unit_of_measurement: 's'
  - platform: mqtt
    name : Snelheid
    state_topic: "/ESP_Easy/Fan/State"
    value_template: >
      {% if value|float==0 %}Standby{% endif %}
      {% if value|float==1 %}Laag{% endif %}
      {% if value|float==2 %}Medium{% endif %}
      {% if value|float==3 %}Hoog{% endif %}
      {% if value|float==4 %}Full{% endif %}
      {% if value|float>=11 %}Hoog(T){% endif %}
     
fan:
  - platform: mqtt
    command_topic: "/ESP_Easy/Fan/cmd"
    state_topic : "/ESP_Easy/Fan/State"
    speed_command_topic: "/ESP_Easy/Fan/cmd"
    speed_state_topic: "/ESP_Easy/Fan/State"
    state_value_template: "{% if value|float==0 %}State 0{% endif %}{% if value|float >0 %}State 1{% endif %}"
    speed_value_template: "{% if value|float==0 %}State 0{% endif %}{% if value|float >0 and value|float <=4 %}State {{value}}{% endif %}{% if value|float >=11 %}State 3{% endif %}"
    payload_on: "State 1"
    payload_off: "State 0"
    payload_low_speed: "State 1"
    payload_medium_speed: "State 2"
    payload_high_speed: "State 3"
    optimistic: "true"
    name: Afzuiging badkamer
    speeds:
      - low
      - medium
      - high    

group:
  Ventilator:
    entities:
      - fan.afzuiging_badkamer
      - sensor.Snelheid
      - sensor.Tijd

customize.yaml
code:
1
2
3
4
   sensor.tijd:
      icon: mdi:timer
   sensor.snelheid:
      icon: mdi:transfer


  • jvdmast
  • Registratie: november 2002
  • Laatst online: 11:12
quote:
Ierlandfan schreef op vrijdag 12 januari 2018 @ 17:03:
Wat moet er in de code aangepast worden om de (raw) command-id's te onderscheppen?
Met deze regel wordt gefilterd wat jij wilt zien:
https://github.com/supers...RFT/IthoEcoFanRFT.ino#L80
Dus vervang dit:
C++:
1
    if ((cmd != IthoUnknown) && chk) {  // only act on good cmd and correct id.

door zoiets:
C++:
1
    if (true) {  // act on every packet.

Volgens mij is dat al genoeg.
Je zou ook een (grote) stap verder kunnen gaan en het hele message proberen te tonen.
Dit zit in de library in "inMessage2".
Middels een vergelijkbare functie als getLastIDstr zou je die dan netjes kunnen printen.
https://github.com/supers.../IthoCC1101.cpp#L986-L993
Even uit de losse pols ongeveer:
C++:
1
2
3
4
5
6
7
8
String IthoCC1101::getLastMessage2str() {
    String str;
    for (uint8_t i=0; i<72;i++) {
        str += String(inMessage2.data[i], HEX);
        if (i<71) str += "-";
    }
    return str;
}

Dan krijg je alle data die binnenkwam.
Oja, en natuurlijk netjes de functie toevoegen in de IthoCC1101.h file onder de public sectie.
quote:
demanditho schreef op vrijdag 12 januari 2018 @ 17:47:
Dat is tricky bij deze. Het join commando is bij deze ook anders.
Ik snap je dilemma. Maar zonder een join zal het sowieso nooit werken. Kan je met de library wel de commando's ontvangen van jouw remote, daarvoor is geen join nodig? (oftewel is het op dat vlak wel compatible)

jvdmast wijzigde deze reactie 12-01-2018 21:28 (26%)
Reden: message2 weergeven


  • jodur
  • Registratie: mei 2007
  • Laatst online: 17-11 21:59
Heb in de ESP_EASY plugin de variabele LastIDindex geimplementeerd: :)F https://github.com/jodur/ESPEASY_Plugin_ITHO/tree/LastIdIndex

LET OP is een andere branch, je kan ook nog het orgineel pakken!

MQTT topic: /ESP_Easy/<task name>/LastIDindex

Payload values:

0=> laatste commando is verstuurd door ESP_EASY (via de C1101 natuurlijk)
1=> laatste commando is verstuurd door device met ID1 (zoals ingesteld bij device settings)
2=> laatste commando is verstuurd door device met ID2 (zoals ingesteld bij device settings)
3=> laatste commando is verstuurd door device met ID3 (zoals ingesteld bij device settings)


Komt dan een extra sensor bij (zie voorgaande post)

Homeassistant config voorbeeld:
code:
1
2
3
4
5
6
7
8
- platform: mqtt
    name : Laatste bediening
    state_topic: "/ESP_Easy/Fan/LastIDindex"
    value_template: >
      {% if value|float==0 %}Hass{% endif %}
      {% if value|float==1 %}Badkamer{% endif %}
      {% if value|float==2 %}Keuken{% endif %}
      {% if value|float==3 %}WC{% endif %}


  • Ierlandfan
  • Registratie: augustus 2002
  • Laatst online: 15-11 18:08
@jodur

Kun je toevallig een versie van ESPEasy compilen met daarin de message2 output? (Log_level_debug bijvoorbeeld) Ik krijg mijn development platform niet lekker up.

  • Pascal Saul
  • Registratie: augustus 2001
  • Laatst online: 17-11 21:06
@jvdmast @jodur @Ierlandfan

Ik heb het ontvangst gedeelte kunnen fixen. Echter moet deze fix nu geïmplementeerd worden in de code. Echter is de vraag of deze voor iedereen werkt... Het begin is gemaakt door edjeed maar niet gemerged. Echter is de code in de tussentijd alweer aangepast dat een merge niet werkt. In de laatste versie van IthoCC1101.cpp:
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
void IthoCC1101::initReceive()
    //Data rate         38.3835kBaud
    //RX filter BW      325.000000kHz
    Data rate           8.00896kBaud
    RX filter BW        67.708333kHz    

    //Deviation         50.781250kHz
    Deviation           25.390625kHz

    //writeRegister(CC1101_MDMCFG4 ,0x5A);
    //writeRegister(CC1101_MDMCFG3 ,0x83);
    writeRegister(CC1101_MDMCFG4 ,0xE8);
    writeRegister(CC1101_MDMCFG3 ,0x43);

    //writeRegister(CC1101_DEVIATN ,0x50);
    writeRegister(CC1101_DEVIATN ,0x40);

    //writeRegister(CC1101_FSCAL0 ,0x11);
    writeRegister(CC1101_FSCAL0 ,0x1F);

    //writeRegister(CC1101_FSCAL2 ,0x00);

void  IthoCC1101::initReceiveMessage2(IthoMessageType expectedMessageType)
    //writeRegister(CC1101_MDMCFG4 ,0x5A); // set kBaud
    writeRegister(CC1101_MDMCFG4 ,0x9A); //RX filter BW : 162.500000 Khz Datarate: 38.3835kBaud

    //writeRegister(CC1101_DEVIATN ,0x50);
    writeRegister(CC1101_DEVIATN ,0x50); //Deviation: 50.781250kHz

Resultaat:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
device-ID remote: 69-59-96-69-a9-a9-9a-56 ,Command received= low
device-ID remote: 69-59-96-69-a9-a9-9a-56 ,Command received= high
device-ID remote: 69-59-96-69-a9-a9-9a-56 ,Command received= medium
device-ID remote: 69-59-96-69-a9-a9-9a-56 ,Command received= timer1
device-ID remote: 69-59-96-69-a9-a9-9a-56 ,Command received= timer2
device-ID remote: 69-59-96-69-a9-a9-9a-56 ,Command received= timer3

device-ID remote: 6a-aa-56-a9-a5-a9-9a-56 ,Command received= low
device-ID remote: 6a-aa-56-a9-a5-a9-9a-56 ,Command received= medium
device-ID remote: 6a-aa-56-a9-a5-a9-9a-56 ,Command received= high
device-ID remote: 6a-aa-56-a9-a5-a9-9a-56 ,Command received= timer1
device-ID remote: 6a-aa-56-a9-a5-a9-9a-56 ,Command received= timer2
device-ID remote: 6a-aa-56-a9-a5-a9-9a-56 ,Command received= timer3

En nu moet alles gemerged worden in alle plugins en dergelijke... Ik kreeg de ESP plugin van @jodur niet gecompileerd hier maar dat zal wel aan mij liggen.

  • Ierlandfan
  • Registratie: augustus 2002
  • Laatst online: 15-11 18:08
String getLastMessage2str = PLUGIN_145_rf.getLastMessage2str();

log += F("Device-ID: \r\n");
log += Id;
log += F("Message2 Command: \r\n");
log += getLastMessage2str;

ik wilde per se (omdat het niet lukte) ESPEasy zelf kunnen compilen en dus had ik mezelf voorgenomen om er dan zoveel mogelijk debug in te stoppen (log_level_debug) zodat ik de ESP niet de hele tijd aan mijn computer hoef te hangen.

Edit: Dit werkt (iets) beter...ik moet alleen nog message2 autmagisch af laten breken en door laten lopen op de 2e regel.

log = F("Device-ID: \r\n");
log += Id;
addLog(LOG_LEVEL_DEBUG, log);
log = F("Message2: = \r\n");
log += getLastMessage2str;
addLog(LOG_LEVEL_DEBUG, log);
log = F("Command Status: \r\n");
log += F("IGNORED");
addLog(LOG_LEVEL_DEBUG, log);

Ierlandfan wijzigde deze reactie 18-01-2018 14:59 (33%)


  • edjeed
  • Registratie: april 2011
  • Niet online
quote:
jvdmast schreef op donderdag 18 januari 2018 @ 13:37:
[...]

Ja dat is https, nee fSecure zegt verder niets.
Overigens zie ik een onduidelijkheid in de wijzigingen in Pull Request #1,
In de initReceive wordt CC1101_DEVIATN in het request van 0x50 naar 0x40 veranderd, en dan in de initReceiveMessage2 toch weer op 0x50 gelaten. En aangezien we alleen nog maar message2 bekijken is dat niet logisch.
Lees de comments even door.....
https://github.com/supersjimmie/IthoEcoFanRFT/pull/1

edjeed wijzigde deze reactie 18-01-2018 15:02 (5%)


  • Ierlandfan
  • Registratie: augustus 2002
  • Laatst online: 15-11 18:08
Excuus voor de onjuiste info, met de modificatie van Pascal ontvang ik nu veel sneller en veel meer. Zat wat legacy in mijn hoofd code.
Pagina: 1 2


Apple iPhone 11 Nintendo Switch Lite LG OLED C9 Google Pixel 4 FIFA 20 Samsung Galaxy S10 Sony PlayStation 5 Sport

'14 '15 '16 '17 2018

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2019 Hosting door True