FHEM - aufschlüsseln

    • FHEM - aufschlüsseln

      Hallo Leute,

      kann mir jemand etwas unter die Arme greifen?
      Ich verstehe fast nur Bahnhof :D

      Dies ist die Original Datei von der FHEM Wiki Arduino Seite

      Mir ist die deklaration klar:


      - Inputs / Outputs
      - Ethernet Shield ( muss ich WLAN dann herstellen)
      - Sensor lesen

      und ab if (params = e.serviceRequest()) wird es unklar.

      Er liest alle digital Pins , alle analog Pins und dann noch per A1 bis D8 somit liest er sämtlich Pins auf sämtliche Wege ein ( komplettes Board) stimmt dies so ?


      Was passiert hier?



      else if (strcmp(params, "?cmd=set_D2_OFF") == 0) // Modified
      {
      digitalWrite(2, LOW);
      e.print("D2:0");

      USW... ab hier ist wirklich Bahnhof ?(

      Freue mich auf aufklärung 8o


      Wie ich das ganze dann noch auf eine Oberfläche/ PC oder Handy, bekomme habe ich noch gar nicht geschaut :|

      C-Quellcode

      1. // A web server to control the arduino via FHEM
      2. #include "etherShield.h"
      3. #include "ETHER_28J60.h"
      4. #include <RCSwitch.h>
      5. int outputPin = 5;
      6. int inputPin = 8;
      7. int sensorPin = A6;
      8. int sensorValue = 0;
      9. int sensorVal = 0;
      10. static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24}; // this just needs to be unique for your network,
      11. static uint8_t ip[4] = {192, 168, 2, 44}; // the IP address for your board. Check your home hub
      12. // to find an IP address not in use and pick that
      13. // this or 10.0.0.15 are likely formats for an address
      14. // that will work.
      15. static uint16_t port = 80; // Use port 80 - the standard for HTTP
      16. // RCSwitch configuration
      17. RCSwitch mySwitch = RCSwitch();
      18. int RCTransmissionPin = 6;
      19. ETHER_28J60 e;
      20. void setup()
      21. {
      22. e.setup(mac, ip, port);
      23. pinMode(RCTransmissionPin, OUTPUT);
      24. pinMode(outputPin, OUTPUT);
      25. pinMode(inputPin, INPUT);
      26. pinMode(sensorPin, INPUT);
      27. digitalWrite(outputPin, LOW);
      28. mySwitch.enableTransmit( RCTransmissionPin );
      29. mySwitch.setPulseLength(320);
      30. }
      31. void loop()
      32. {
      33. sensorVal = digitalRead(inputPin);
      34. sensorValue = analogRead(sensorPin);
      35. char* params;
      36. if (params = e.serviceRequest())
      37. {
      38. if (strcmp(params, "?cmd=get_digital_values") == 0)
      39. {
      40. e.print("1: ");
      41. e.print(digitalRead(1));
      42. e.print(" 2: ");
      43. e.print(digitalRead(2));
      44. e.print(" 3: ");
      45. e.print(digitalRead(3));
      46. e.print(" 4: ");
      47. e.print(digitalRead(4));
      48. e.print(" 5: ");
      49. e.print(digitalRead(5));
      50. e.print(" 6: ");
      51. e.print(digitalRead(6));
      52. }
      53. else if (strcmp(params, "?cmd=get_analog_values") == 0)
      54. {
      55. e.print("1: ");
      56. e.print(analogRead(A1));
      57. e.print(" 2: ");
      58. e.print(analogRead(A2));
      59. e.print(" 3: ");
      60. e.print(analogRead(A3));
      61. e.print(" 4: ");
      62. e.print(analogRead(A4));
      63. e.print(" 5: ");
      64. e.print(analogRead(A5));
      65. e.print(" 6: ");
      66. e.print(analogRead(A6));
      67. }
      68. else if (strcmp(params, "?cmd=get_sensor_values_all") == 0)
      69. {
      70. e.print("A1: ");
      71. e.print(analogRead(A1));
      72. e.print(" A2: ");
      73. e.print(analogRead(A2));
      74. e.print(" A3: ");
      75. e.print(analogRead(A3));
      76. e.print(" A4: ");
      77. e.print(analogRead(A4));
      78. e.print(" A5: ");
      79. e.print(analogRead(A5));
      80. e.print(" A6: ");
      81. e.print(analogRead(A6));
      82. e.print(" D1: ");
      83. e.print(digitalRead(1));
      84. e.print(" D2: ");
      85. e.print(digitalRead(2));
      86. e.print(" D3: ");
      87. e.print(digitalRead(3));
      88. e.print(" D4: ");
      89. e.print(digitalRead(4));
      90. e.print(" D5: ");
      91. e.print(digitalRead(5));
      92. e.print(" D6: ");
      93. e.print(digitalRead(6));
      94. e.print(" D7: ");
      95. e.print(digitalRead(7));
      96. e.print(" D8: ");
      97. e.print(digitalRead(8));
      98. }
      99. else if (strcmp(params, "?cmd=set_D2_OFF") == 0) // Modified
      100. {
      101. digitalWrite(2, LOW);
      102. e.print("D2:0");
      103. }
      104. else if (strcmp(params, "?cmd=set_D2_ON") == 0) // Modified
      105. {
      106. digitalWrite(2, HIGH);
      107. e.print("D2:1");
      108. }
      109. else if (strcmp(params, "?cmd=set_D3_OFF") == 0) // Modified
      110. {
      111. digitalWrite(3, LOW);
      112. e.print("D3:0");
      113. }
      114. else if (strcmp(params, "?cmd=set_D3_ON") == 0) // Modified
      115. {
      116. digitalWrite(3, HIGH);
      117. e.print("D3:1");
      118. }
      119. else if (strcmp(params, "?cmd=set_D4_OFF") == 0) // Modified
      120. {
      121. digitalWrite(4, LOW);
      122. e.print("D4:0");
      123. }
      124. else if (strcmp(params, "?cmd=set_D4_ON") == 0) // Modified
      125. {
      126. digitalWrite(4, HIGH);
      127. e.print("D4:1");
      128. }
      129. else if (strcmp(params, "?cmd=set_D5_OFF") == 0) // Modified
      130. {
      131. digitalWrite(outputPin, LOW);
      132. e.print("D5:0");
      133. }
      134. else if (strcmp(params, "?cmd=set_D5_ON") == 0) // Modified
      135. {
      136. digitalWrite(outputPin, HIGH);
      137. e.print("D5:1");
      138. }
      139. else if (strcmp(params, "?cmd=set_D6_OFF") == 0) // Modified
      140. {
      141. digitalWrite(6, LOW);
      142. e.print("D6:0");
      143. }
      144. else if (strcmp(params, "?cmd=set_D6_ON") == 0) // Modified
      145. {
      146. digitalWrite(6, HIGH);
      147. e.print("D6:1");
      148. }
      149. else if (strcmp(params, "?cmd=set_D7_OFF") == 0) // Modified
      150. {
      151. digitalWrite(7, LOW);
      152. e.print("D7:0");
      153. }
      154. else if (strcmp(params, "?cmd=set_D7_ON") == 0) // Modified
      155. {
      156. digitalWrite(7, HIGH);
      157. e.print("D7:1");
      158. }
      159. else
      160. {
      161. e.print("<H1>WebRemote</H1><br>");
      162. e.print(params);
      163. e.print("<br>Sensorvalue D8: ");
      164. e.print(sensorVal);
      165. e.print("<br>");
      166. e.print("Sensorvalue A6: ");
      167. e.print(sensorValue);
      168. e.print("<br>");
      169. if (strcmp(params, "?cmd=on") == 0)
      170. {
      171. digitalWrite(outputPin, HIGH);
      172. e.print("<br>D5 ON <br>");
      173. e.print("<A HREF='?cmd=off'>Turn off</A>");
      174. }
      175. else if (strcmp(params, "?cmd=off") == 0) // Modified
      176. {
      177. digitalWrite(outputPin, LOW);
      178. e.print("<br>D5 OFF <br>");
      179. e.print("<A HREF='?cmd=on'>Turn on</A>");
      180. }
      181. else if (strcmp(params, "?set_41_ON") == 0) {
      182. mySwitch.switchOn(1,1);
      183. e.print("<br>4,1 ON <br>");
      184. } else if (strcmp(params, "?set_41_OFF") == 0) {
      185. mySwitch.switchOff(1,1);
      186. e.print("<br>4,1 OFF <br>");
      187. } else if (strcmp(params, "?cmd=set_42_ON") == 0) {
      188. mySwitch.switchOn(4,2);
      189. e.print("<br>4,2 ON <br>");
      190. } else if (strcmp(params, "?cmd=set_42_OFF") == 0) {
      191. mySwitch.switchOff(4,2);
      192. e.print("<br>4,2 OFF <br>");
      193. }
      194. else if (strcmp(params, "?set_43_ON") == 0) {
      195. mySwitch.switchOn(4,3);
      196. e.print("<br>4,3 ON <br>");
      197. } else if (strcmp(params, "?set_43_OFF") == 0) {
      198. mySwitch.switchOff(4,3);
      199. e.print("<br>4,3 OFF <br>");
      200. } else if (strcmp(params, "?cmd=set_44_ON") == 0) {
      201. mySwitch.switchOn(4,4);
      202. e.print("<br>4,4 ON <br>");
      203. } else if (strcmp(params, "?cmd=set_44_OFF") == 0) {
      204. mySwitch.switchOff(4,4);
      205. e.print("<br>4,4 OFF <br>");
      206. }
      207. else
      208. {
      209. e.print("<A HREF='?cmd=off'>Turn off</A><br>");
      210. e.print("<A HREF='?cmd=on'>Turn on</A>");
      211. }
      212. }
      213. e.respond();
      214. }
      215. }
      Alles anzeigen
      LG Alex
      cnc-aus-holz im Facebook // Mein Youtube Kanal
    • Hallo Alex

      Ich glaube du bist das etwas verkehrt angegangen ;)

      Du hast momentan noch kein Fhem auf einen Linux PC /Raspi/ Frizbox installiert (nehme ich an)
      du hast derzeit eigentlich nur die Software für den Arduino. die Software tut folgendes:

      die Zentrale fragt den Status der Pins vom Arduino ab und wertet diese aus -> über LAN/Wlan

      die Zentrale sendet an den Arduino die errechneten Werte -> über LAN/Wlan

      Die Zentrale stellt die auch den nötigen Webserver zu Verfügung das du wie Werte anzeigen/auswerten/verändern kannst.


      somit solltest du mit einer Zentrale anfangen und den Arduino dann einbinden.


      in den Bildern ist meine Fhem Zentrale zu sehen (die Weboberfläche)


      lg
      Fadi
      Bilder
      • fhem1.jpg

        174,27 kB, 998×768, 10 mal angesehen
      • fhem2.jpg

        191,85 kB, 998×768, 7 mal angesehen
      • fhem3.jpg

        110,96 kB, 1.024×602, 7 mal angesehen
      • fhem4.jpg

        147,65 kB, 1.024×644, 8 mal angesehen
    • Hallo zusammen,

      ein Raspberry 3 ist schon bestellt und sollte Morgen da sein.
      Mir schien das aufsetzten vom Server klar. Was ich dann aber noch genau einstellen muss auf dem Server sehe ich dann :rolleyes: um auch eine Grafik zu bekommen mit Werten.

      Mir ging es nur mal um das Verständnis von dem Beispiel Sketch.
      Komme da nicht ganz dahinter ^^ .

      Danke für die Bilder.
      Den Link hab ich gestern gelesen deshalb sag ich ja nicht so schwierig die Einrichtung. :D (naja mal schauen )

      Vielleicht komme ich am Wochenende dazu um ihn auf zu setzen und dahinter was das im Sketch alles bedeutet ?(
      LG Alex
      cnc-aus-holz im Facebook // Mein Youtube Kanal
    • Hallo Alex

      KampfHund schrieb:

      else if (strcmp(params, "?cmd=set_D2_OFF") == 0) // Modified
      {
      digitalWrite(2, LOW);
      das ist einfach erklärt

      wenn vom Fhem Server der Befehl "set_D2_OFF" an den Arduino gesendet wird dann schaltet der D2 auf low


      da das für alle Ein und Ausgänge einen endlos loop lauft sind alle Ein und Ausgänge anzusprechen


      das ist jetzt aber Glanz einfach erklärt. ;)



      du Willst mit mehren 1wire Sensoren Temperaturmessen, das kann man am raspi direkt über den GPIO machen sofern der DeviceTree angepasst ist. Erkennt Fhem die Sensoren automatisch (mit den Serien nummern)

      eine einfache Thermostatsteuerung schaut in Fhem dann so aus -> Bild

      lg
      Fadi
      Bilder
      • ds18B20.jpg

        132,36 kB, 921×768, 9 mal angesehen
    • Hi,

      sitze gerade am PC zum die Bilder zu sichten.

      He Fadi wenn ich das richtig sehe hast du da sogar den Strom Zähler drauf?
      Was ist das genau für ein Bauteil?

      Danke

      -------------
      EDIT:

      Ah okay das wird klarer - Danke :) .
      Dies bedeutet ich muss für jedes Teil ( Fühler ) einen passenden Code auf den Server schreiben damit der weiß Hey ich muss das bekommen und dass dann machen.

      Supi Danke :thumbup:

      Ja das ist natürlich die einfachste Variante direkt die GPIO Pins auf dem RASPY nutzen.
      Kann ich aber nicht da ich schon viiiiiele viiiiiele Stunden am nanov3 verbracht habe und dieser in den Garten kommt.
      Werde somit das ganze mittels WLAN versuchen einzubinden :whistling:
      LG Alex
      cnc-aus-holz im Facebook // Mein Youtube Kanal
    • Hallo Alex

      KampfHund schrieb:

      hast du da sogar den Strom Zähler drauf?
      genau genommen sind es 2 Stromzähler

      die beiden haben einen Anschluss zum seriellen auslesen Ursprünglich war in den Beiden Zählern ein Zwave/Mbus modul eingesteckt. Ein eigener raspi auf Hutschiene liest abwechselt die beiden Stromzähler aus und überträgt mittels WLAN die Daten auf den HauptFhem Server.

      für Fhem ist ein eigenes Modul vorhanden das das formatieren der ausgelesenen Daten übernimmt.

      lg
      Fadi

      Ps: die beiden Zähler waren vom Pilot Smarthome Versuch vom Verbund und für mich dadurch gratis.
      Bilder
      • 20170622_175617.jpg

        195,57 kB, 1.024×577, 7 mal angesehen
      • 20170622_175627.jpg

        158,57 kB, 1.024×577, 6 mal angesehen
    • Hallo Alex

      Im Bild ist die Aquarien Steuerung die über den GPIO von einen Raspi lauft.

      12x Schaltbare Ausgänge (250W LED Beleuchtung Sonnen geführt, CO2, Düngerpumpen, Osmose, Futter, Lüfter Drehzahlgesteuert)
      2x Eingänge (Osmose)
      1x PH wert Messung (CO2)
      3X Temperaturmessung (Wasser, LED Kühler, Netzteil)

      das ganze lauft nur über den GPIO.

      Fast wie Dein Hochbeet ;)
      lg
      Fadi
      Bilder
      • 20170622_175239.jpg

        108,87 kB, 433×768, 9 mal angesehen
    • Hallo zusammen,

      @ Fadi: GEILO echt 8o ^^ , also das ist der Wahnsinn was man damit alles anstellen kann.
      Nochmals danke an euch für die FHEM verlinkung.

      So der Raspi 3 ist da und wurde sofort mit diesem Tutorial eingerichtet: http://www.meintechblog.de/

      Das klappt wirklich unter der angegeben Zeit ohne Probleme! Ein Cardreader wird aber benötigt um die microSD Karte am PC zu haben für das Image.


      So jetzt heißt es LESEN wiki.fhem.de - Erste Schritte.
      LG Alex
      cnc-aus-holz im Facebook // Mein Youtube Kanal
    • Hallo Leute,

      mit dem Thema bin ich durch, habe die angegebenen Schalt Funktionen mit Lampe 1 und 2 durch. funktioniert :thumbup: .
      Was ich krass finde das man mit (sunrise) den perfekt errechneten Sonnenaufgang gleich hat. Wahnsinn...

      Jetzt kommt diese schwarte fhem.de/Heimautomatisierung-mit-fhem.pdf

      Hier muss ich aber einiges erst mal überfliegen denn mich interessiert als aller erstes:

      - Wie bekomme ich eine Oberfläche grafisch zustande.
      - Wie binde ich das Arduino nano mit esp8266 ein mit Fühlern.

      Danach werde ich anfangen genauer zu wälzen um es auch umsetzen zu können :whistling: .


      EDIT:

      Floorplan:


      Um einen Floorplan anzulegen geht man am besten über diese zwei Seiten.
      meintechblog.de/2016/02/howto-…rpi2-touchscreen-steuern/
      wiki.fhem.de/wiki/Floorplan_Installations-Leitfaden


      Bei mir gab es Probleme mit den Datei Rechten!
      Man muss über Putty auf den Raspi und für diesen Ordner /opt/fhem/www/images/default
      vorübergehend Rechte mit 777 vergeben. Der Befehl dafür lautet sudo Chmod 777 default
      Dann Putty schließen und mittels dem Programm Filezilla in den Ordner /opt/fhem/www/images/default seine Grafik oder Grundriss laden.
      Es muss auch ident benannt werden, bei mir fp_Hochbeet.png

      Wenn man fertig ist die Rechte wieder auf 755 setzen.


      Sieht ja schonmal Gut aus soweit. :thumbup:



      PS: Sorry für die Zensur meiner Favoriten
      LG Alex
      cnc-aus-holz im Facebook // Mein Youtube Kanal
    • Hallo

      KampfHund schrieb:

      GEILO echt , also das ist der Wahnsinn was man damit alles anstellen kann.
      Willkommen bei Fhem
      Es ist wirklich unglaublich und es wächst immer noch.
      Ich glaube das es fast keine bessere Steuerungssoftware die so allgemein nutzbar ist gibt.

      ich glaube du wolltest deine Solaranlage nach führen das ist mit "sunrise" jetzt auch einfach möglich. (oder verwechsel ich da was)


      ich vermute jetzt mal dass wir einige Kilometer von den Fräsen weg sind. ;)
      aber das Thema ist so berauschend :)

      lg
      Fadi

      Ps. mach dir eine Kopie der vom Image der SD Karte damit du schnell einen Ersatz hast und verwende nur qualitativ hochwertige SD Karten für den Raspi.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von fadi ()

    • Hi Jungs,


      Tchefter schrieb:

      Ich habe ja schon lange den Faden verloren in diesem Thema aber Alex das Projekt ist megacool!
      den Faden hab ich auch verloren ;) , muss da viel lesen :D .


      fadi schrieb:

      ich glaube du wolltest deine Solaranlage nach führen das ist mit "sunrise" jetzt auch einfach möglich. (oder verwechsel ich da was)
      Ja die Solar nachführung steht noch im Raum. Werde ich mir dann anschauen aber ich denke dass dies noch ewig dauern wird :saint: .

      fadi schrieb:

      ich vermute jetzt mal dass wir einige Kilometer von den Fräsen weg sind.
      aber das Thema ist so berauschend
      Das macht ja nix deshalb hab ich damals gleich die Rubrik Arduino mit eingefügt :) .
      Es ist multifunktionell einsetzbar. Ob es eine Fräse ist mit GRBL, ein Aquarium, eine Rolladensteuerung, ein Hochbeet, etc.
      Was evtl. noch gemacht gehört wäre eine Kategorie die nur für die Fräsen ist, aber da gibt es ja noch keinen Beitrag speziell.
      Bei den fräsen passen die meisten ja nicht mehr viel an und nutzen den fertigen Code, deshalb ist denke ich die Rubrik auch so leer. ( fließt meist direkt in Baubericht - mit nutze grbl)

      Mein Ziel war das ich durch euch hilfe bekomme und dann für die Nachwelt einen schönen Bericht schreibe mit komplettem werdegang.
      Hier auch mal ein dickes LOB an @fadi und @networker ihr habt mir hier schon einiges geholfen!

      Also wer ein Ardu Projekt hat *posten* hier versuchen wir gemeinsam eine Lösung zu finden :) .

      So zurück zu FHEM:


      Das Thema Floorplan funktioniert


      Offen:

      - Wie binde ich das Arduino nano mit esp8266 ein mit Fühlern.

      Hier gab glaube ich @networker den entsprechenden Tipp: MQTT (Mosquitto),

      auf Deutsch ein übersetzer wo die Daten vom Nano an FHEM übergiebt.


      Was muss man tun?
      Ihr müsst auf euren Raspberry den MQTT installieren. Mit dieser Anleitung geht das bestens ( ein Danke an den Betreiber der tollen Seite )

      Die wichtigsten Befehle die über Putty auf den Raspberry geschickt werden müssen zum installieren:

      Bitte geht direkt auf die Seite denn es steht noch vieles vieles mehr in diesem tollen Beitrag, sowie ein Arduino Code zum testen!

      https://haus-automatisierung.com/hardware/fhem/2017/02/13/fhem-tutorial-reihe-part-26-esp8266-arduino-mqtt-temperatur-an-fhem.html schrieb:

      sudo apt-get update
      sudo apt-get upgrade
      wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
      sudo apt-key add mosquitto-repo.gpg.key
      cd /etc/apt/sources.list.d/
      sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list
      sudo apt-get update
      sudo apt-get install mosquitto mosquitto-clients python-mosquitto
      sudo cpan install Net::MQTT:Simple
      sudo cpan install Net::MQTT:Constants
      LG Alex
      cnc-aus-holz im Facebook // Mein Youtube Kanal
    • Hi Mario,

      ja man muss ja fit bleiben :)

      Habe mein Fhem jetzt auch am laufen auf einem Raspi 3, das ganze ist wirklich der Hammer.
      Beschäftige mich da mit den ESP Nodemcu 8266 und jetzt auch Wemos D1 mini, da drauf läuft sehr gut ESPEasy und ist perfekt wenn man mal schnell was braucht wie helligkeit/ Feuchte oder Temperatur :)

      Mittlerweile habe ich einen 433mhz empfänger selber gebaut (Curl) und bin am tüfteln mit den Funksteckdosen.

      Mein Kollege will auf sein EIB Bus System Alexa integrieren somit hab ich mir das für FHEM auch mal angeschaut... Sachen gibt´s... :love:
      LG Alex
      cnc-aus-holz im Facebook // Mein Youtube Kanal
    • Mein nächster Plan wäre:
      ESP01/07 auf einer kleinen Platine mit 1x Wechsler Relaise um hinter einem Lichtschalter einzubauen quasi als Wechselschalter.

      Dann könnte man das Haus/ Wohnung zum vollen Smarthome umbauen. Ja und über MQTT.
      Hab dazu schon eine fertige Platine gesehen und auch ein Video.
      Aber die Zeit ..... ;(

      PS: das ist Gut zu wissen, hast die selber gebaut?
      LG Alex
      cnc-aus-holz im Facebook // Mein Youtube Kanal