(649,2,'2018-04-21 08:02:38','2018-04-21 06:02:38','<h1 id=\"levitation\">Magnetic Levitation (1 inch gap, stable, low cost)</h1>\r\n[video width=\"1280\" height=\"720\" mp4=\"http://johann.langhofer.net/wp-content/uploads/2018/04/VID_20180418_2122030.mp4\" loop=\"true\"][/video]\r\n\r\nI\'ve managed a simple solution for the magnetic challenge in order to get a stable levitation. After several experiments and a lot of research I came up with a solution using a handful components, more particularly, only five electronic parts were needed: a power supply, an arduino, a handmade coil, a MOSFET and a hall-sensor. With a small piece of software running on the arduino, the magnetic cubes can be hold in a very stable position. But wait, it isn\'t so easy, I\'ve got several issues and finally run into a serious problem, but finally I\'ve got the solution...\r\n\r\nLets start with the big picture: an electromagnet with a coil and an iron core on top attracts a floating magnet, a  hall sensor reads the magnetic strength in the gap between the two magnets. An electronic switch turns the coil OFF if the strength exceeds a certain value (threshold) and turns it ON if the strength falls blow this threshold. The threshold is exactly the line, where the sum of the up-pointing forces are in balance with the gravity of the floating magnet. The target is to keep the magnet very close to this line.\r\n\r\n<img class=\"alignnone size-full wp-image-588\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/bigPicture1.jpg\" alt=\"bigPicture1\" width=\"510\" height=\"616\" />\r\n\r\nSo what\'s the main problem trying to keep a magnet in a constant position from the electromagnet? Stability is the answer. In the configuration above, there are some facts that stability can\'t be reached even if the electromagnet is switched with  a perfect timing  and high frequency, after some seconds or minutes the system tends to oscillate. Several articles on the WEB are describing this situation and most of them are recommending a PID controller. Well, to cut a long story short, I had no success with PID controllers, neither software-based nor hardware-based. But even if I had been successful, setting the PID-constants would be for one specific configuration only and I like a more general system, where I chan change the type/size/weight of the magnets without reconfiguring the software. Here you can see the cubes getting out of control:\r\n<div id=\"levitation2\"></div>\r\n[video  width=\"1280\" height=\"720\" mp4=\"http://johann.langhofer.net/wp-content/uploads/2018/04/VID_20180419_0724230.mp4\"][/video]\r\n\r\nAnd finally here is my solution to fix this problem: using a damping plate/disc does the magic job. Putting a non magnetic, good electric conductor, such as aluminium or copper on top and/or bottom of your system will eliminate the oscillating due the lorentz force, which is generated by the induced current in the conductor and acts against the oscillating force.\r\n\r\n<img class=\"alignnone size-full wp-image-601\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/text8870.jpg\" alt=\"text8870\" width=\"508\" height=\"616\" />:\r\n\r\nHowever, to achieve a good damping factor, the plate/disc  must not be too far away from the magnet, it also depends how strong the magnet is. For my strong N42 cubes I\'m using an aluminium disc with 6mm thickness, 40 mm of diameter and a distance of approx. 15mm to the magnets bottom, which is sufficient enough (the damping disc is at the lower section of the picture):\r\n\r\n[caption id=\"attachment_578\" align=\"alignnone\" width=\"1190\"]<img class=\"wp-image-578 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200844.jpg\" alt=\"Damping disc and spacers\" width=\"1190\" height=\"893\" /> Damping disc and spacers[/caption]\r\n\r\nIf the damping plate is too far away from the magnet, spacers can be used (non magnetic material such as plastic, acryl etc.). Good candidates for damping plates are also CPU heat sinks.\r\n\r\nFinally, for my levitation system I can change magnets with different style, strength and size on the fly without reconfiguring the software. Sometimes, depending on the magnets, I have to remove/add a spacer, but this can be done without effort.\r\n\r\n[caption id=\"attachment_636\" align=\"alignnone\" width=\"710\"]<img class=\"wp-image-636 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180419_163435.jpg\" alt=\"magnetic levitation of a x-mas ball :)\" width=\"710\" height=\"1000\" /> magnetic levitation of a x-mas ball :)[/caption]\r\n\r\n[caption id=\"attachment_642\" align=\"alignnone\" width=\"797\"]<img class=\"wp-image-642 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180419_165130.jpg\" alt=\"magnetic levitation of a dodecahedron\" width=\"797\" height=\"1092\" /> magnetic levitation of a dodecahedron[/caption]\r\n\r\nFor people interested on how I built up the systen, here is some technical Information:\r\n\r\nThe system is supplied with a 7.5V power supply and draws a current of 40-50mA to hold the magnets (&lt; 400 mW). The power supply is connected to the arduino-nano Vin-pin and also to one end of the coil. The coil is not very critical, I used a 0.3mm wire and filled up the windings from 7 to 20 mm diameter. The coil length is 20 mm and the resistance is about 30 ohms. The other connection of the coil goes to the drain of a <span class=\"st\">N-channel power MOSFET (<em>5N50</em> ),  the gate of the MOSFET is connected directly to an arduino output and the source is connected to the ground. For the magnetic sensor I\'m using a Hall-Effect chip from Allegro (A1302), the output signal goes directly to an analog input of the arduino and the 5V supply is coming from the arduino pin. For optical effects I\'m driving some Superleds (Apa102), but this is optional and has nothing to do with the core system. </span>\r\n\r\nThe software is using the arduino AD-Converter in free running mode and makes the decision whether to switch the coil ON or OFF after each conversion is completed. So the main loop, which acts as a simple PW-Modulation, is very straight forward:\r\n<pre>#define THRESHOLD 622\r\n#define OUTOFRANGE THRESHOLD-50</pre>\r\n<pre>void loop() {\r\n  unsigned int sensorValue = analogNext();\r\n  if (sensorValue &gt;= THRESHOLD|| sensorValue &lt; OUTOFRANGE) {\r\n    digitalWriteD(OUT_PIN, 0);\r\n  }\r\n  else {\r\n    digitalWriteD(OUT_PIN, 1);\r\n  }\r\n}</pre>\r\nTo determine the threshold value, just leave the coil unmagnetized (comment the if/else block) and insert a serial.println(sensorValue) statement instead. Now, while watching the values, put manually the magnet below the coil until you feel some force pulling upwards. The monitored value is now a good starting point for your threshold. In the example above the threshold value is set to 622 which can be tuned by approx. +- 10-20 digits  to compensate different magnet weights. The OUTOFRANGE constant is used to switch the coil OFF if no magnet is present and thus to reduce the power consumption on idle time. The value isn\'t that critical, I decided to set this constant 50 digits below the threshold.\r\n\r\n<span class=\"st\">The whole sketch can be downloaded from <a href=\"https://raw.githubusercontent.com/androdlang/Magnetic-Levitation/master/levitation_core.ino\">here</a>.\r\n</span>\r\n\r\n[caption id=\"attachment_579\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-579 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200946.jpg\" alt=\"Cover of the levitation controller. Here are some Super-LEDs integrated (optional).\" width=\"893\" height=\"1190\" /> Cover of the levitation controller. Here are some Super-LEDs integrated (optional).[/caption]\r\n\r\n[caption id=\"attachment_580\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-580 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_201039.jpg\" alt=\"An optical diffusor is used as a spacer. The diffusor is a piece of transparent paper ( laser cut ) between two acylic disks. \" width=\"893\" height=\"1190\" /> An optical diffusor is used as a spacer. The diffusor is a piece of transparent paper ( laser cut ) between two acrylic disks.[/caption]\r\n\r\n[caption id=\"attachment_582\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-582 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_202350.jpg\" alt=\"An arduino-NANO is controlling the system. Analog reading of a Hall-effect sensor is converted into a PWM Signal to switch an electromagnet.\" width=\"893\" height=\"1190\" /> An arduino-NANO is controlling the system. The electronic switch (N-channel MOSFET) is placed below the NANO socket and is mounted on a heat sink.[/caption]\r\n\r\n[caption id=\"attachment_577\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-577 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200656.jpg\" alt=\"Handmade coil with an iron core. The length and the diameter of the coil is about 20mm. Between the lower aluminiuim discs (which are acting as a damper) there is a tiny hall sensor integrated.\" width=\"893\" height=\"1190\" /> Handmade coil with an iron core and 0.3 mm copper wire. The length and diameter of the coil is about 20mm. Between the lower aluminiuim discs (which are acting as a damper) there is a tiny hall sensor integrated.[/caption]\r\n\r\n[caption id=\"attachment_576\" align=\"alignnone\" width=\"1190\"]<img class=\"wp-image-576 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200627.jpg\" alt=\"Aluminium discs acting as protector and damper.\" width=\"1190\" height=\"893\" /> Aluminium discs acting as sensor-protector and damper.[/caption]\r\n\r\n[caption id=\"attachment_575\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-575 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200615.jpg\" alt=\"Arduino housing seen from below.\" width=\"893\" height=\"1190\" /> Arduino housing seen from below.[/caption]\r\n\r\n[caption id=\"attachment_574\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-574 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200514.jpg\" alt=\"Power supply input jack.\" width=\"893\" height=\"1190\" /> Power supply input jack.[/caption]\r\n\r\n[caption id=\"attachment_581\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-581 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_201726.jpg\" alt=\"Here is the complete, full functional and stable levitation system.\" width=\"893\" height=\"1190\" /> Here is the complete, full functional and stable levitation system.[/caption]\r\n<h2>Other projects</h2>\r\nUseful components:\r\n<blockquote>Arduino Mini, Nano, Mega, laser 405nm\r\nRaspberryPI I, II\r\nWLan ESP8266\r\nand much more.</blockquote>\r\n[supsystic-gallery id=5 position=center]','Electronics','','inherit','closed','closed','','61-revision-v1','','','2018-04-21 08:02:38','2018-04-21 06:02:38','',61,'http://johann.langhofer.net/61-revision-v1/',0,'revision','',0),(650,2,'2018-04-21 08:08:39','2018-04-21 06:08:39','<h1 id=\"levitation\">Magnetic Levitation (1 inch gap, stable, low cost)</h1>\r\n[video width=\"1280\" height=\"720\" mp4=\"http://johann.langhofer.net/wp-content/uploads/2018/04/VID_20180418_2122030.mp4\" loop=\"true\"][/video]\r\n\r\nI\'ve managed a simple solution for the magnetic challenge in order to get a stable levitation. After several experiments and a lot of research I came up with a solution using a handful components, more particularly, only five electronic parts were needed: a power supply, an arduino, a handmade coil, a MOSFET and a hall-sensor. With a small piece of software running on the arduino, the magnetic cubes can be hold in a very stable position. But wait, it isn\'t so easy, I\'ve got several issues and finally run into a serious problem, but finally I\'ve got the solution...\r\n\r\nLets start with the big picture: an electromagnet with a coil and an iron core on top attracts a floating magnet, a  hall sensor reads the magnetic strength in the gap between the two magnets. An electronic switch turns the coil OFF if the strength exceeds a certain value (threshold) and turns it ON if the strength falls blow this threshold. The threshold is exactly the line, where the sum of the up-pointing forces are in balance with the gravity of the floating magnet. The target is to keep the magnet very close to this line.\r\n\r\n<img class=\"alignnone size-full wp-image-588\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/bigPicture1.jpg\" alt=\"bigPicture1\" width=\"510\" height=\"616\" />\r\n\r\nSo what\'s the main problem trying to keep a magnet in a constant position from the electromagnet? Stability is the answer. In the configuration above, there are some facts that stability can\'t be reached even if the electromagnet is switched with  a perfect timing  and high frequency, after some seconds or minutes the system tends to oscillate. Several articles on the WEB are describing this situation and most of them are recommending a PID controller. Well, to cut a long story short, I had no success with PID controllers, neither software-based nor hardware-based. But even if I had been successful, setting the PID-constants would be for one specific configuration only and I like a more general system, where I chan change the type/size/weight of the magnets without reconfiguring the software. Here you can see the cubes getting out of control:\r\n<div id=\"levitation2\"></div>\r\n[video  width=\"1280\" height=\"720\" mp4=\"http://johann.langhofer.net/wp-content/uploads/2018/04/VID_20180419_0724230.mp4\"][/video]\r\n\r\nAnd finally here is my solution to fix this problem: using a damping plate/disc does the magic job. Putting a non magnetic, good electric conductor, such as aluminium or copper on top and/or bottom of your system will eliminate the oscillating due the lorentz force, which is generated by the induced current in the conductor and acts against the oscillating force.\r\n\r\n<img class=\"alignnone size-full wp-image-601\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/text8870.jpg\" alt=\"text8870\" width=\"508\" height=\"616\" />:\r\n\r\nHowever, to achieve a good damping factor, the plate/disc  must not be too far away from the magnet, it also depends how strong the magnet is. For my strong N42 cubes I\'m using an aluminium disc with 6mm thickness, 40 mm of diameter and a distance of approx. 15mm to the magnets bottom, which is sufficient enough (the damping disc is at the lower section of the picture):\r\n\r\n[caption id=\"attachment_578\" align=\"alignnone\" width=\"1190\"]<img class=\"wp-image-578 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200844.jpg\" alt=\"Damping disc and spacers\" width=\"1190\" height=\"893\" /> Damping disc and spacers[/caption]\r\n\r\nIf the damping plate is too far away from the magnet, spacers can be used (non magnetic material such as plastic, acryl etc.). Good candidates for damping plates are also CPU heat sinks.\r\n\r\nFinally, for my levitation system I can change magnets with different style, strength and size on the fly without reconfiguring the software. Sometimes, depending on the magnets, I have to remove/add a spacer, but this can be done without effort.\r\n\r\n[caption id=\"attachment_636\" align=\"alignnone\" width=\"710\"]<img class=\"wp-image-636 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180419_163435.jpg\" alt=\"magnetic levitation of a x-mas ball :)\" width=\"710\" height=\"1000\" /> magnetic levitation of a Christmas ball :)[/caption]\r\n\r\n[caption id=\"attachment_642\" align=\"alignnone\" width=\"797\"]<img class=\"wp-image-642 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180419_165130.jpg\" alt=\"magnetic levitation of a dodecahedron\" width=\"797\" height=\"1092\" /> magnetic levitation of a dodecahedron[/caption]\r\n\r\nFor people interested on how I built up the systen, here is some technical Information:\r\n\r\nThe system is supplied with a 7.5V power supply and draws a current of 40-50mA to hold the magnets (&lt; 400 mW). The power supply is connected to the arduino-nano Vin-pin and also to one end of the coil. The coil is not very critical, I used a 0.3mm wire and filled up the windings from 7 to 20 mm diameter. The coil length is 20 mm and the resistance is about 30 ohms. The other connection of the coil goes to the drain of a <span class=\"st\">N-channel power MOSFET (<em>5N50</em> ),  the gate of the MOSFET is connected directly to an arduino output and the source is connected to the ground. For the magnetic sensor I\'m using a Hall-Effect chip from Allegro (A1302), the output signal goes directly to an analog input of the arduino and the 5V supply is coming from the arduino pin. For optical effects I\'m driving some Superleds (Apa102), but this is optional and has nothing to do with the core system. </span>\r\n\r\nThe software is using the arduino AD-Converter in free running mode and makes the decision whether to switch the coil ON or OFF after each conversion is completed. So the main loop, which acts as a simple PW-Modulation, is very straight forward:\r\n<pre>#define THRESHOLD 622\r\n#define OUTOFRANGE THRESHOLD-50</pre>\r\n<pre>void loop() {\r\n  unsigned int sensorValue = analogNext();\r\n  if (sensorValue &gt;= THRESHOLD|| sensorValue &lt; OUTOFRANGE) {\r\n    digitalWriteD(OUT_PIN, 0);\r\n  }\r\n  else {\r\n    digitalWriteD(OUT_PIN, 1);\r\n  }\r\n}</pre>\r\nTo determine the threshold value, just leave the coil unmagnetized (comment the if/else block) and insert a serial.println(sensorValue) statement instead. Now, while watching the values, put manually the magnet below the coil until you feel some force pulling upwards. The monitored value is now a good starting point for your threshold. In the example above the threshold value is set to 622 which can be tuned by approx. +- 10-20 digits  to compensate different magnet weights. The OUTOFRANGE constant is used to switch the coil OFF if no magnet is present and thus to reduce the power consumption on idle time. The value isn\'t that critical, I decided to set this constant 50 digits below the threshold.\r\n\r\n<span class=\"st\">The whole sketch can be downloaded from <a href=\"https://raw.githubusercontent.com/androdlang/Magnetic-Levitation/master/levitation_core.ino\">here</a>.\r\n</span>\r\n\r\n[caption id=\"attachment_579\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-579 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200946.jpg\" alt=\"Cover of the levitation controller. Here are some Super-LEDs integrated (optional).\" width=\"893\" height=\"1190\" /> Cover of the levitation controller. Here are some Super-LEDs integrated (optional).[/caption]\r\n\r\n[caption id=\"attachment_580\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-580 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_201039.jpg\" alt=\"An optical diffusor is used as a spacer. The diffusor is a piece of transparent paper ( laser cut ) between two acylic disks. \" width=\"893\" height=\"1190\" /> An optical diffusor is used as a spacer. The diffusor is a piece of transparent paper ( laser cut ) between two acrylic disks.[/caption]\r\n\r\n[caption id=\"attachment_582\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-582 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_202350.jpg\" alt=\"An arduino-NANO is controlling the system. Analog reading of a Hall-effect sensor is converted into a PWM Signal to switch an electromagnet.\" width=\"893\" height=\"1190\" /> An arduino-NANO is controlling the system. The electronic switch (N-channel MOSFET) is placed below the NANO socket and is mounted on a heat sink.[/caption]\r\n\r\n[caption id=\"attachment_577\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-577 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200656.jpg\" alt=\"Handmade coil with an iron core. The length and the diameter of the coil is about 20mm. Between the lower aluminiuim discs (which are acting as a damper) there is a tiny hall sensor integrated.\" width=\"893\" height=\"1190\" /> Handmade coil with an iron core and 0.3 mm copper wire. The length and diameter of the coil is about 20mm. Between the lower aluminiuim discs (which are acting as a damper) there is a tiny hall sensor integrated.[/caption]\r\n\r\n[caption id=\"attachment_576\" align=\"alignnone\" width=\"1190\"]<img class=\"wp-image-576 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200627.jpg\" alt=\"Aluminium discs acting as protector and damper.\" width=\"1190\" height=\"893\" /> Aluminium discs acting as sensor-protector and damper.[/caption]\r\n\r\n[caption id=\"attachment_575\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-575 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200615.jpg\" alt=\"Arduino housing seen from below.\" width=\"893\" height=\"1190\" /> Arduino housing seen from below.[/caption]\r\n\r\n[caption id=\"attachment_574\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-574 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200514.jpg\" alt=\"Power supply input jack.\" width=\"893\" height=\"1190\" /> Power supply input jack.[/caption]\r\n\r\n[caption id=\"attachment_581\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-581 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_201726.jpg\" alt=\"Here is the complete, full functional and stable levitation system.\" width=\"893\" height=\"1190\" /> Here is the complete, full functional and stable levitation system.[/caption]\r\n<h2>Other projects</h2>\r\nUseful components:\r\n<blockquote>Arduino Mini, Nano, Mega, laser 405nm\r\nRaspberryPI I, II\r\nWLan ESP8266\r\nand much more.</blockquote>\r\n[supsystic-gallery id=5 position=center]','Electronics','','inherit','closed','closed','','61-revision-v1','','','2018-04-21 08:08:39','2018-04-21 06:08:39','',61,'http://johann.langhofer.net/61-revision-v1/',0,'revision','',0),(651,2,'2018-04-21 08:16:10','2018-04-21 06:16:10','<h1 id=\"levitation\">Magnetic Levitation (1 inch gap, stable, low cost)</h1>\r\n[video width=\"1280\" height=\"720\" mp4=\"http://johann.langhofer.net/wp-content/uploads/2018/04/VID_20180418_2122030.mp4\" loop=\"true\"][/video]\r\n\r\nI\'ve managed a simple solution for the magnetic challenge in order to get a stable levitation. After several experiments and a lot of research I came up with a solution using a handful components, more particularly, only five electronic parts were needed: a power supply, an arduino, a handmade coil, a MOSFET and a hall-sensor. With a small piece of software running on the arduino, the magnetic cubes can be hold in a very stable position. But wait, it isn\'t so easy, I\'ve got several issues and finally run into a serious problem, but finally I\'ve got the solution...\r\n\r\nLets start with the big picture: an electromagnet with a coil and an iron core on top attracts a floating magnet, a  hall sensor reads the magnetic strength in the gap between the two magnets. An electronic switch turns the coil OFF if the strength exceeds a certain value (threshold) and turns it ON if the strength falls blow this threshold. The threshold is exactly the line, where the sum of the up-pointing forces are in balance with the gravity of the floating magnet. The target is to keep the magnet very close to this line.\r\n\r\n<img class=\"alignnone size-full wp-image-588\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/bigPicture1.jpg\" alt=\"bigPicture1\" width=\"510\" height=\"616\" />\r\n\r\nSo what\'s the main problem trying to keep a magnet in a constant position from the electromagnet? Stability is the answer. In the configuration above, there are some facts that stability can\'t be reached even if the electromagnet is switched with  a perfect timing  and high frequency, after some seconds or minutes the system tends to oscillate. Several articles on the WEB are describing this situation and most of them are recommending a PID controller. Well, to cut a long story short, I had no success with PID controllers, neither software-based nor hardware-based. But even if I had been successful, setting the PID-constants would be for one specific configuration only and I like a more general system, where I chan change the type/size/weight of the magnets without reconfiguring the software. Here you can see the cubes getting out of control:\r\n<div id=\"levitation2\"></div>\r\n[video  width=\"1280\" height=\"720\" mp4=\"http://johann.langhofer.net/wp-content/uploads/2018/04/VID_20180419_0724230.mp4\"][/video]\r\n\r\nAnd finally here is my solution to fix this problem: using a damping plate/disc does the magic job. Putting a non magnetic, good electric conductor, such as aluminium or copper on top and/or bottom of your system will eliminate the oscillating due the lorentz force, which is generated by the induced current in the conductor and acts against the oscillating force.\r\n\r\n<img class=\"alignnone size-full wp-image-601\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/text8870.jpg\" alt=\"text8870\" width=\"508\" height=\"616\" />:\r\n\r\nHowever, to achieve a good damping factor, the plate/disc  must not be too far away from the magnet, it also depends how strong the magnet is. For my strong N42 cubes I\'m using an aluminium disc with 6mm thickness, 40 mm of diameter and a distance of approx. 15mm to the magnets bottom, which is sufficient enough (the damping disc is at the lower section of the picture):\r\n\r\n[caption id=\"attachment_578\" align=\"alignnone\" width=\"1190\"]<img class=\"wp-image-578 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200844.jpg\" alt=\"Damping disc and spacers\" width=\"1190\" height=\"893\" /> Damping disc and spacers[/caption]\r\n\r\nIf the damping plate is too far away from the magnet, spacers can be used (non magnetic material such as plastic, acryl etc.). Good candidates for damping plates are also CPU heat sinks.\r\n\r\nFinally, for my levitation system I can change magnets with different style, strength and size on the fly without reconfiguring the software. Sometimes, depending on the magnets, I have to remove/add a spacer, but this can be done without effort.\r\n\r\n[caption id=\"attachment_636\" align=\"alignnone\" width=\"710\"]<img class=\"wp-image-636 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180419_163435.jpg\" alt=\"magnetic levitation of a x-mas ball :)\" width=\"710\" height=\"1000\" /> magnetic levitation of a Christmas ball :)[/caption]\r\n\r\n[caption id=\"attachment_642\" align=\"alignnone\" width=\"797\"]<img class=\"wp-image-642 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180419_165130.jpg\" alt=\"magnetic levitation of a dodecahedron\" width=\"797\" height=\"1092\" /> magnetic levitation of a dodecahedron[/caption]\r\n\r\nFor people interested on how I built up the systen, here is some technical Information:\r\n\r\nThe system is supplied with a 7.5V power supply and draws a current of 40-50mA to hold the magnets (&lt; 400 mW). The power supply is connected to the arduino-nano Vin-pin and also to one end of the coil. The coil is not very critical, I used a 0.3mm wire and filled up the windings from 7 to 20 mm diameter. The coil length is 20 mm and the resistance is about 30 ohms. The other connection of the coil goes to the drain of a <span class=\"st\">N-channel power MOSFET (<em>5N50</em> ),  the gate of the MOSFET is connected directly to an arduino output and the source is connected to the ground. For the magnetic sensor I\'m using a Hall-Effect chip from Allegro (A1302), the output signal goes directly to an analog input of the arduino and the 5V supply is coming from the arduino pin. For optical effects I\'m driving some Superleds (Apa102), but this is optional and has nothing to do with the core system. </span>\r\n\r\nThe software is using the arduino AD-Converter in free running mode and makes the decision whether to switch the coil ON or OFF after each conversion is completed. So the main loop, which acts as a simple PW-Modulation, is very straight forward:\r\n<pre>#define THRESHOLD 622\r\n#define OUTOFRANGE THRESHOLD-50</pre>\r\n<pre>void loop() {\r\n  unsigned int sensorValue = analogNext();\r\n  if (sensorValue &gt;= THRESHOLD|| sensorValue &lt; OUTOFRANGE) {\r\n    digitalWriteD(OUT_PIN, 0);\r\n  }\r\n  else {\r\n    digitalWriteD(OUT_PIN, 1);\r\n  }\r\n}</pre>\r\nTo determine the threshold value, just leave the coil unmagnetized (comment the if/else block) and insert a serial.println(sensorValue) statement instead. Now, while watching the values, put manually the magnet below the coil until you feel some force pulling upwards. The monitored value is now a good starting point for your threshold. In the example above the threshold value is set to 622 which can be tuned by approx. +- 10-20 digits  to compensate different magnet weights. The OUTOFRANGE constant is used to switch the coil OFF if no magnet is present and thus to reduce the power consumption on idle time. The value isn\'t that critical, I decided to set this constant 50 digits below the threshold.\r\n\r\n<span class=\"st\">The whole sketch can be downloaded from <a href=\"https://raw.githubusercontent.com/androdlang/Magnetic-Levitation/master/levitation_core.ino\">here</a>.\r\n</span>\r\n\r\n[caption id=\"attachment_579\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-579 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200946.jpg\" alt=\"Cover of the levitation controller. Here are some Super-LEDs integrated (optional).\" width=\"893\" height=\"1190\" /> Cover of the levitation controller. Here are some Super-LEDs integrated (optional).[/caption]\r\n\r\n[caption id=\"attachment_580\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-580 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_201039.jpg\" alt=\"An optical diffusor is used as a spacer. The diffusor is a piece of transparent paper ( laser cut ) between two acylic disks. \" width=\"893\" height=\"1190\" /> An optical diffusor is used as a spacer. The diffusor is a piece of transparent paper ( laser cut ) between two acrylic disks.[/caption]\r\n\r\n[caption id=\"attachment_582\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-582 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_202350.jpg\" alt=\"An arduino-NANO is controlling the system. Analog reading of a Hall-effect sensor is converted into a PWM Signal to switch an electromagnet.\" width=\"893\" height=\"1190\" /> An arduino-NANO is controlling the system. The electronic switch (N-channel MOSFET) is placed below the NANO socket and is mounted on a heat sink.[/caption]\r\n\r\n[caption id=\"attachment_577\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-577 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200656.jpg\" alt=\"Handmade coil with an iron core. The length and the diameter of the coil is about 20mm. Between the lower aluminiuim discs (which are acting as a damper) there is a tiny hall sensor integrated.\" width=\"893\" height=\"1190\" /> Handmade coil with an iron core and 0.3 mm copper wire. The length and diameter of the coil is about 20mm. Between the lower aluminiuim discs (which are acting as a damper) there is a tiny hall sensor integrated.[/caption]\r\n\r\n[caption id=\"attachment_576\" align=\"alignnone\" width=\"1190\"]<img class=\"wp-image-576 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200627.jpg\" alt=\"Aluminium discs acting as protector and damper.\" width=\"1190\" height=\"893\" /> Aluminium discs acting as sensor-protector and damper.[/caption]\r\n\r\n[caption id=\"attachment_575\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-575 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200615.jpg\" alt=\"Arduino housing seen from below.\" width=\"893\" height=\"1190\" /> Arduino housing seen from below. It\'s a surface mount box found in a hardware store.[/caption]\r\n\r\n[caption id=\"attachment_574\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-574 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200514.jpg\" alt=\"Power supply input jack.\" width=\"893\" height=\"1190\" /> Power supply input jack.[/caption]\r\n\r\n[caption id=\"attachment_581\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-581 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_201726.jpg\" alt=\"Here is the complete, full functional and stable levitation system.\" width=\"893\" height=\"1190\" /> Here is the complete, full functional and stable levitation system.[/caption]\r\n<h2>Other projects</h2>\r\nUseful components:\r\n<blockquote>Arduino Mini, Nano, Mega, laser 405nm\r\nRaspberryPI I, II\r\nWLan ESP8266\r\nand much more.</blockquote>\r\n[supsystic-gallery id=5 position=center]','Electronics','','inherit','closed','closed','','61-revision-v1','','','2018-04-21 08:16:10','2018-04-21 06:16:10','',61,'http://johann.langhofer.net/61-revision-v1/',0,'revision','',0),(652,2,'2018-04-21 08:17:22','2018-04-21 06:17:22','<h1 id=\"levitation\">Magnetic Levitation (1 inch gap, stable, low cost)</h1>\r\n[video width=\"1280\" height=\"720\" mp4=\"http://johann.langhofer.net/wp-content/uploads/2018/04/VID_20180418_2122030.mp4\" loop=\"true\"][/video]\r\n\r\nI\'ve managed a simple solution for the magnetic challenge in order to get a stable levitation. After several experiments and a lot of research I came up with a solution using a handful components, more particularly, only five electronic parts were needed: a power supply, an arduino, a handmade coil, a MOSFET and a hall-sensor. With a small piece of software running on the arduino, the magnetic cubes can be hold in a very stable position. But wait, it isn\'t so easy, I\'ve got several issues and finally run into a serious problem, but finally I\'ve got the solution...\r\n\r\nLets start with the big picture: an electromagnet with a coil and an iron core on top attracts a floating magnet, a  hall sensor reads the magnetic strength in the gap between the two magnets. An electronic switch turns the coil OFF if the strength exceeds a certain value (threshold) and turns it ON if the strength falls blow this threshold. The threshold is exactly the line, where the sum of the up-pointing forces are in balance with the gravity of the floating magnet. The target is to keep the magnet very close to this line.\r\n\r\n<img class=\"alignnone size-full wp-image-588\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/bigPicture1.jpg\" alt=\"bigPicture1\" width=\"510\" height=\"616\" />\r\n\r\nSo what\'s the main problem trying to keep a magnet in a constant position from the electromagnet? Stability is the answer. In the configuration above, there are some facts that stability can\'t be reached even if the electromagnet is switched with  a perfect timing  and high frequency, after some seconds or minutes the system tends to oscillate. Several articles on the WEB are describing this situation and most of them are recommending a PID controller. Well, to cut a long story short, I had no success with PID controllers, neither software-based nor hardware-based. But even if I had been successful, setting the PID-constants would be for one specific configuration only and I like a more general system, where I chan change the type/size/weight of the magnets without reconfiguring the software. Here you can see the cubes getting out of control:\r\n<div id=\"levitation2\"></div>\r\n[video  width=\"1280\" height=\"720\" mp4=\"http://johann.langhofer.net/wp-content/uploads/2018/04/VID_20180419_0724230.mp4\"][/video]\r\n\r\nAnd finally here is my solution to fix this problem: using a damping plate/disc does the magic job. Putting a non magnetic, good electric conductor, such as aluminium or copper on top and/or bottom of your system will eliminate the oscillating due the lorentz force, which is generated by the induced current in the conductor and acts against the oscillating force.\r\n\r\n<img class=\"alignnone size-full wp-image-601\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/text8870.jpg\" alt=\"text8870\" width=\"508\" height=\"616\" />:\r\n\r\nHowever, to achieve a good damping factor, the plate/disc  must not be too far away from the magnet, it also depends how strong the magnet is. For my strong N42 cubes I\'m using an aluminium disc with 6mm thickness, 40 mm of diameter and a distance of approx. 15mm to the magnets bottom, which is sufficient enough (the damping disc is at the lower section of the picture):\r\n\r\n[caption id=\"attachment_578\" align=\"alignnone\" width=\"1190\"]<img class=\"wp-image-578 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200844.jpg\" alt=\"Damping disc and spacers\" width=\"1190\" height=\"893\" /> Damping disc and spacers[/caption]\r\n\r\nIf the damping plate is too far away from the magnet, spacers can be used (non magnetic material such as plastic, acryl etc.). Good candidates for damping plates are also CPU heat sinks.\r\n\r\nFor my levitation system I can change magnets with different style, strength and size on the fly without reconfiguring the software. Sometimes, depending on the magnets, I have to remove/add a spacer, but this can be done without effort.\r\n\r\n[caption id=\"attachment_636\" align=\"alignnone\" width=\"710\"]<img class=\"wp-image-636 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180419_163435.jpg\" alt=\"magnetic levitation of a x-mas ball :)\" width=\"710\" height=\"1000\" /> magnetic levitation of a Christmas ball :)[/caption]\r\n\r\n[caption id=\"attachment_642\" align=\"alignnone\" width=\"797\"]<img class=\"wp-image-642 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180419_165130.jpg\" alt=\"magnetic levitation of a dodecahedron\" width=\"797\" height=\"1092\" /> magnetic levitation of a dodecahedron[/caption]\r\n\r\nFor people interested on how I built up the systen, here is some technical Information:\r\n\r\nThe system is supplied with a 7.5V power supply and draws a current of 40-50mA to hold the magnets (&lt; 400 mW). The power supply is connected to the arduino-nano Vin-pin and also to one end of the coil. The coil is not very critical, I used a 0.3mm wire and filled up the windings from 7 to 20 mm diameter. The coil length is 20 mm and the resistance is about 30 ohms. The other connection of the coil goes to the drain of a <span class=\"st\">N-channel power MOSFET (<em>5N50</em> ),  the gate of the MOSFET is connected directly to an arduino output and the source is connected to the ground. For the magnetic sensor I\'m using a Hall-Effect chip from Allegro (A1302), the output signal goes directly to an analog input of the arduino and the 5V supply is coming from the arduino pin. For optical effects I\'m driving some Superleds (Apa102), but this is optional and has nothing to do with the core system. </span>\r\n\r\nThe software is using the arduino AD-Converter in free running mode and makes the decision whether to switch the coil ON or OFF after each conversion is completed. So the main loop, which acts as a simple PW-Modulation, is very straight forward:\r\n<pre>#define THRESHOLD 622\r\n#define OUTOFRANGE THRESHOLD-50</pre>\r\n<pre>void loop() {\r\n  unsigned int sensorValue = analogNext();\r\n  if (sensorValue &gt;= THRESHOLD|| sensorValue &lt; OUTOFRANGE) {\r\n    digitalWriteD(OUT_PIN, 0);\r\n  }\r\n  else {\r\n    digitalWriteD(OUT_PIN, 1);\r\n  }\r\n}</pre>\r\nTo determine the threshold value, just leave the coil unmagnetized (comment the if/else block) and insert a serial.println(sensorValue) statement instead. Now, while watching the values, put manually the magnet below the coil until you feel some force pulling upwards. The monitored value is now a good starting point for your threshold. In the example above the threshold value is set to 622 which can be tuned by approx. +- 10-20 digits  to compensate different magnet weights. The OUTOFRANGE constant is used to switch the coil OFF if no magnet is present and thus to reduce the power consumption on idle time. The value isn\'t that critical, I decided to set this constant 50 digits below the threshold.\r\n\r\n<span class=\"st\">The whole sketch can be downloaded from <a href=\"https://raw.githubusercontent.com/androdlang/Magnetic-Levitation/master/levitation_core.ino\">here</a>.\r\n</span>\r\n\r\n[caption id=\"attachment_579\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-579 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200946.jpg\" alt=\"Cover of the levitation controller. Here are some Super-LEDs integrated (optional).\" width=\"893\" height=\"1190\" /> Cover of the levitation controller. Here are some Super-LEDs integrated (optional).[/caption]\r\n\r\n[caption id=\"attachment_580\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-580 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_201039.jpg\" alt=\"An optical diffusor is used as a spacer. The diffusor is a piece of transparent paper ( laser cut ) between two acylic disks. \" width=\"893\" height=\"1190\" /> An optical diffusor is used as a spacer. The diffusor is a piece of transparent paper ( laser cut ) between two acrylic disks.[/caption]\r\n\r\n[caption id=\"attachment_582\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-582 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_202350.jpg\" alt=\"An arduino-NANO is controlling the system. Analog reading of a Hall-effect sensor is converted into a PWM Signal to switch an electromagnet.\" width=\"893\" height=\"1190\" /> An arduino-NANO is controlling the system. The electronic switch (N-channel MOSFET) is placed below the NANO socket and is mounted on a heat sink.[/caption]\r\n\r\n[caption id=\"attachment_577\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-577 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200656.jpg\" alt=\"Handmade coil with an iron core. The length and the diameter of the coil is about 20mm. Between the lower aluminiuim discs (which are acting as a damper) there is a tiny hall sensor integrated.\" width=\"893\" height=\"1190\" /> Handmade coil with an iron core and 0.3 mm copper wire. The length and diameter of the coil is about 20mm. Between the lower aluminiuim discs (which are acting as a damper) there is a tiny hall sensor integrated.[/caption]\r\n\r\n[caption id=\"attachment_576\" align=\"alignnone\" width=\"1190\"]<img class=\"wp-image-576 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200627.jpg\" alt=\"Aluminium discs acting as protector and damper.\" width=\"1190\" height=\"893\" /> Aluminium discs acting as sensor-protector and damper.[/caption]\r\n\r\n[caption id=\"attachment_575\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-575 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200615.jpg\" alt=\"Arduino housing seen from below.\" width=\"893\" height=\"1190\" /> Arduino housing seen from below. It\'s a surface mount box found in a hardware store.[/caption]\r\n\r\n[caption id=\"attachment_574\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-574 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200514.jpg\" alt=\"Power supply input jack.\" width=\"893\" height=\"1190\" /> Power supply input jack.[/caption]\r\n\r\n[caption id=\"attachment_581\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-581 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_201726.jpg\" alt=\"Here is the complete, full functional and stable levitation system.\" width=\"893\" height=\"1190\" /> Here is the complete, full functional and stable levitation system.[/caption]\r\n<h2>Other projects</h2>\r\nUseful components:\r\n<blockquote>Arduino Mini, Nano, Mega, laser 405nm\r\nRaspberryPI I, II\r\nWLan ESP8266\r\nand much more.</blockquote>\r\n[supsystic-gallery id=5 position=center]','Electronics','','inherit','closed','closed','','61-revision-v1','','','2018-04-21 08:17:22','2018-04-21 06:17:22','',61,'http://johann.langhofer.net/61-revision-v1/',0,'revision','',0),(653,2,'2018-04-21 08:20:40','2018-04-21 06:20:40','<h1 id=\"levitation\">Magnetic Levitation (1 inch gap, stable, low cost)</h1>\r\n[video width=\"1280\" height=\"720\" mp4=\"http://johann.langhofer.net/wp-content/uploads/2018/04/VID_20180418_2122030.mp4\" loop=\"true\"][/video]\r\n\r\nI\'ve managed a simple solution for the magnetic challenge in order to get a stable levitation. After several experiments and a lot of research I came up with a solution using a handful components, more particularly, only five electronic parts were needed: a power supply, an Arduino, a handmade coil, a MOSFET and a hall-sensor. With a small piece of software running on the Arduino, the magnetic cubes can be hold in a very stable position. But wait, it isn\'t so easy, I\'ve got several issues and finally run into a serious problem, but finally I\'ve got the solution...\r\n\r\nLets start with the big picture: an electromagnet with a coil and an iron core on top attracts a floating magnet, a  hall sensor reads the magnetic strength in the gap between the two magnets. An electronic switch turns the coil OFF if the strength exceeds a certain value (threshold) and turns it ON if the strength falls blow this threshold. The threshold is exactly the line, where the sum of the up-pointing forces are in balance with the gravity of the floating magnet. The target is to keep the magnet very close to this line.\r\n\r\n<img class=\"alignnone size-full wp-image-588\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/bigPicture1.jpg\" alt=\"bigPicture1\" width=\"510\" height=\"616\" />\r\n\r\nSo what\'s the main problem trying to keep a magnet in a constant position from the electromagnet? Stability is the answer. In the configuration above, there are some facts that stability can\'t be reached even if the electromagnet is switched with  a perfect timing  and high frequency, after some seconds or minutes the system tends to oscillate. Several articles on the WEB are describing this situation and most of them are recommending a PID controller. Well, to cut a long story short, I had no success with PID controllers, neither software-based nor hardware-based. But even if I had been successful, setting the PID-constants would be for one specific configuration only and I like a more general system, where I chan change the type/size/weight of the magnets without reconfiguring the software. Here you can see the cubes getting out of control:\r\n<div id=\"levitation2\"></div>\r\n[video  width=\"1280\" height=\"720\" mp4=\"http://johann.langhofer.net/wp-content/uploads/2018/04/VID_20180419_0724230.mp4\"][/video]\r\n\r\nAnd finally here is my solution to fix this problem: using a damping plate/disc does the magic job. Putting a non magnetic, good electric conductor, such as aluminium or copper on top and/or bottom of your system will eliminate the oscillating due the lorentz force, which is generated by the induced current in the conductor and acts against the oscillating force.\r\n\r\n<img class=\"alignnone size-full wp-image-601\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/text8870.jpg\" alt=\"text8870\" width=\"508\" height=\"616\" />:\r\n\r\nHowever, to achieve a good damping factor, the plate/disc  must not be too far away from the magnet, it also depends how strong the magnet is. For my strong N42 cubes I\'m using an aluminium disc with 6mm thickness, 40 mm of diameter and a distance of approx. 15mm to the magnets bottom, which is sufficient enough (the damping disc is at the lower section of the picture):\r\n\r\n[caption id=\"attachment_578\" align=\"alignnone\" width=\"1190\"]<img class=\"wp-image-578 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200844.jpg\" alt=\"Damping disc and spacers\" width=\"1190\" height=\"893\" /> Damping disc and spacers[/caption]\r\n\r\nIf the damping plate is too far away from the magnet, spacers can be used (non magnetic material such as plastic, acryl etc.). Good candidates for damping plates are also CPU heat sinks.\r\n\r\nFor my levitation system I can change magnets with different style, strength and size on the fly without reconfiguring the software. Sometimes, depending on the magnets, I have to remove/add a spacer, but this can be done without effort.\r\n\r\n[caption id=\"attachment_636\" align=\"alignnone\" width=\"710\"]<img class=\"wp-image-636 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180419_163435.jpg\" alt=\"magnetic levitation of a x-mas ball :)\" width=\"710\" height=\"1000\" /> magnetic levitation of a Christmas ball :)[/caption]\r\n\r\n[caption id=\"attachment_642\" align=\"alignnone\" width=\"797\"]<img class=\"wp-image-642 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180419_165130.jpg\" alt=\"magnetic levitation of a dodecahedron\" width=\"797\" height=\"1092\" /> magnetic levitation of a dodecahedron[/caption]\r\n\r\nFor people interested on how I built up the systen, here is some technical Information:\r\n\r\nThe system is supplied with a 7.5V power supply and draws a current of 40-50mA to hold the magnets (&lt; 400 mW). The power supply is connected to the Arduino-nano Vin-pin and also to one end of the coil. The coil is not very critical, I used a 0.3mm wire and filled up the windings from 7 to 20 mm diameter. The coil length is 20 mm and the resistance is about 30 ohms. The other connection of the coil goes to the drain of a <span class=\"st\">N-channel power MOSFET (<em>5N50</em> ),  the gate of the MOSFET is connected directly to an Arduino output and the source is connected to the ground. For the magnetic sensor I\'m using a Hall-Effect chip from Allegro (A1302), the output signal goes directly to an analog input of the Arduino. The 5V supply for the A1302 is coming from the Arduino pin. For optical effects I\'m driving some Superleds (Apa102), but this is optional and has nothing to do with the core system. </span>\r\n\r\nThe software is using the Arduino AD-Converter in free running mode and makes the decision whether to switch the coil ON or OFF after each conversion is completed. So the main loop, which acts as a simple PW-Modulation, is very straight forward:\r\n<pre>#define THRESHOLD 622\r\n#define OUTOFRANGE THRESHOLD-50</pre>\r\n<pre>void loop() {\r\n  unsigned int sensorValue = analogNext();\r\n  if (sensorValue &gt;= THRESHOLD|| sensorValue &lt; OUTOFRANGE) {\r\n    digitalWriteD(OUT_PIN, 0);\r\n  }\r\n  else {\r\n    digitalWriteD(OUT_PIN, 1);\r\n  }\r\n}</pre>\r\nTo determine the threshold value, just leave the coil unmagnetized (comment the if/else block) and insert a serial.println(sensorValue) statement instead. Now, while watching the values, put manually the magnet below the coil until you feel some force pulling upwards. The monitored value is now a good starting point for your threshold. In the example above the threshold value is set to 622 which can be tuned by approx. +- 10-20 digits  to compensate different magnet weights. The OUTOFRANGE constant is used to switch the coil OFF if no magnet is present and thus to reduce the power consumption on idle time. The value isn\'t that critical, I decided to set this constant 50 digits below the threshold.\r\n\r\n<span class=\"st\">The whole sketch can be downloaded from <a href=\"https://raw.githubusercontent.com/androdlang/Magnetic-Levitation/master/levitation_core.ino\">here</a>.\r\n</span>\r\n\r\n[caption id=\"attachment_579\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-579 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200946.jpg\" alt=\"Cover of the levitation controller. Here are some Super-LEDs integrated (optional).\" width=\"893\" height=\"1190\" /> Cover of the levitation controller. Here are some Super-LEDs integrated (optional).[/caption]\r\n\r\n[caption id=\"attachment_580\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-580 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_201039.jpg\" alt=\"An optical diffusor is used as a spacer. The diffusor is a piece of transparent paper ( laser cut ) between two acylic disks. \" width=\"893\" height=\"1190\" /> An optical diffusor is used as a spacer. The diffusor is a piece of transparent paper ( laser cut ) between two acrylic disks.[/caption]\r\n\r\n[caption id=\"attachment_582\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-582 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_202350.jpg\" alt=\"An arduino-NANO is controlling the system. Analog reading of a Hall-effect sensor is converted into a PWM Signal to switch an electromagnet.\" width=\"893\" height=\"1190\" /> An Arduino-NANO is controlling the system. The electronic switch (N-channel MOSFET) is placed below the NANO socket and is mounted on a heat sink.[/caption]\r\n\r\n[caption id=\"attachment_577\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-577 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200656.jpg\" alt=\"Handmade coil with an iron core. The length and the diameter of the coil is about 20mm. Between the lower aluminiuim discs (which are acting as a damper) there is a tiny hall sensor integrated.\" width=\"893\" height=\"1190\" /> Handmade coil with an iron core and 0.3 mm copper wire. The length and diameter of the coil is about 20mm. Between the lower aluminiuim discs (which are acting as a damper) there is a tiny hall sensor integrated.[/caption]\r\n\r\n[caption id=\"attachment_576\" align=\"alignnone\" width=\"1190\"]<img class=\"wp-image-576 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200627.jpg\" alt=\"Aluminium discs acting as protector and damper.\" width=\"1190\" height=\"893\" /> Aluminium discs acting as sensor-protector and damper.[/caption]\r\n\r\n[caption id=\"attachment_575\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-575 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200615.jpg\" alt=\"Arduino housing seen from below.\" width=\"893\" height=\"1190\" /> Arduino housing seen from below. It\'s a surface mount box found in a hardware store.[/caption]\r\n\r\n[caption id=\"attachment_574\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-574 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_200514.jpg\" alt=\"Power supply input jack.\" width=\"893\" height=\"1190\" /> Power supply input jack.[/caption]\r\n\r\n[caption id=\"attachment_581\" align=\"alignnone\" width=\"893\"]<img class=\"wp-image-581 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/04/IMG_20180418_201726.jpg\" alt=\"Here is the complete, full functional and stable levitation system.\" width=\"893\" height=\"1190\" /> Here is the complete, full functional and stable levitation system.[/caption]\r\n<h2>Other projects</h2>\r\nUseful components:\r\n<blockquote>Arduino Mini, Nano, Mega, laser 405nm\r\nRaspberryPI I, II\r\nWLan ESP8266\r\nand much more.</blockquote>\r\n[supsystic-gallery id=5 position=center]','Electronics','','inherit','closed','closed','','61-revision-v1','','','2018-04-21 08:20:40','2018-04-21 06:20:40','',61,'http://johann.langhofer.net/61-revision-v1/',0,'revision','',0),(655,2,'2018-11-21 09:51:20','2018-11-21 08:51:20','running on an ESP32 Wrover with ILI9341-TFT Display.\n\n<a href=\"https://github.com/androdlang/TFTShape\">Githup project</a>\n\n<a href=\"https://johann.langhofer.net/3d-graphik/\">screenshots</a>\n\n&nbsp;','2D graphics library for ODROID-GO published','','publish','open','open','','2d-graphics-library-published','','','2018-12-21 08:51:52','2018-12-21 07:51:52','',0,'http://johann.langhofer.net/?p=655',0,'post','',0),(656,2,'2018-11-21 09:51:20','2018-11-21 08:51:20','','2D graphics library published','','inherit','closed','closed','','655-revision-v1','','','2018-11-21 09:51:20','2018-11-21 08:51:20','',655,'http://johann.langhofer.net/655-revision-v1/',0,'revision','',0),(658,2,'2018-11-21 09:56:18','2018-11-21 08:56:18','<a href=\"https://github.com/androdlang/TFTShape\">Githup project</a>\r\n\r\n<a href=\"http://johann.langhofer.net/3d-graphik/\">screenshots</a>','2D graphics library for ODROID-GO published','','inherit','closed','closed','','655-revision-v1','','','2018-11-21 09:56:18','2018-11-21 08:56:18','',655,'http://johann.langhofer.net/655-revision-v1/',0,'revision','',0),(659,2,'2018-11-21 09:56:33','2018-11-21 08:56:33','','screenshot_4554','','inherit','open','closed','','screenshot_4554','','','2018-11-21 09:59:56','2018-11-21 08:59:56','',52,'http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_4554.png',0,'attachment','image/png',0),(660,2,'2018-11-21 09:56:34','2018-11-21 08:56:34','','screenshot_4559','','inherit','open','closed','','screenshot_4559','','','2018-11-21 09:59:56','2018-11-21 08:59:56','',52,'http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_4559.png',0,'attachment','image/png',0),(661,2,'2018-11-21 09:56:35','2018-11-21 08:56:35','','screenshot_4564','','inherit','open','closed','','screenshot_4564','','','2018-11-21 09:59:57','2018-11-21 08:59:57','',52,'http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_4564.png',0,'attachment','image/png',0),(662,2,'2018-11-21 09:56:37','2018-11-21 08:56:37','','screenshot_4571','','inherit','open','closed','','screenshot_4571','','','2018-11-21 09:59:56','2018-11-21 08:59:56','',52,'http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_4571.png',0,'attachment','image/png',0),(663,2,'2018-11-21 09:56:38','2018-11-21 08:56:38','','screenshot_4572','','inherit','open','closed','','screenshot_4572','','','2018-11-21 09:59:56','2018-11-21 08:59:56','',52,'http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_4572.png',0,'attachment','image/png',0),(664,2,'2018-11-21 09:56:39','2018-11-21 08:56:39','','screenshot_4598','','inherit','open','closed','','screenshot_4598','','','2018-11-21 09:59:55','2018-11-21 08:59:55','',52,'http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_4598.png',0,'attachment','image/png',0),(665,2,'2018-11-21 09:56:40','2018-11-21 08:56:40','','screenshot_20260','','inherit','open','closed','','screenshot_20260','','','2018-11-21 09:59:56','2018-11-21 08:59:56','',52,'http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_20260.png',0,'attachment','image/png',0),(666,2,'2018-11-21 09:56:42','2018-11-21 08:56:42','','screenshot_20266','','inherit','open','closed','','screenshot_20266','','','2018-11-21 09:59:56','2018-11-21 08:59:56','',52,'http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_20266.png',0,'attachment','image/png',0),(667,2,'2018-11-21 09:56:43','2018-11-21 08:56:43','','screenshot_20287','','inherit','open','closed','','screenshot_20287','','','2018-11-21 09:59:53','2018-11-21 08:59:53','',52,'http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_20287.png',0,'attachment','image/png',0),(668,2,'2018-11-21 09:56:44','2018-11-21 08:56:44','','screenshot_35845','','inherit','open','closed','','screenshot_35845','','','2018-11-21 09:59:53','2018-11-21 08:59:53','',52,'http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_35845.png',0,'attachment','image/png',0),(669,2,'2018-11-21 09:56:44','2018-11-21 08:56:44','','screenshot_35853','','inherit','open','closed','','screenshot_35853','','','2018-11-21 09:59:54','2018-11-21 08:59:54','',52,'http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_35853.png',0,'attachment','image/png',0),(670,2,'2018-11-21 09:56:46','2018-11-21 08:56:46','','screenshot_35854','','inherit','open','closed','','screenshot_35854','','','2018-11-21 09:59:53','2018-11-21 08:59:53','',52,'http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_35854.png',0,'attachment','image/png',0),(671,2,'2018-11-21 09:56:47','2018-11-21 08:56:47','','screenshot_51345','','inherit','open','closed','','screenshot_51345','','','2018-11-21 09:59:55','2018-11-21 08:59:55','',52,'http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_51345.png',0,'attachment','image/png',0),(672,2,'2018-11-21 09:56:48','2018-11-21 08:56:48','','screenshot_51372','','inherit','open','closed','','screenshot_51372','','','2018-11-21 09:59:52','2018-11-21 08:59:52','',52,'http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_51372.png',0,'attachment','image/png',0),(673,2,'2018-11-21 09:56:49','2018-11-21 08:56:49','','screenshot_51387','','inherit','open','closed','','screenshot_51387','','','2018-11-21 09:59:54','2018-11-21 08:59:54','',52,'http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_51387.png',0,'attachment','image/png',0),(674,2,'2018-11-21 09:56:50','2018-11-21 08:56:50','','screenshot_66902','','inherit','open','closed','','screenshot_66902','','','2018-11-21 09:59:55','2018-11-21 08:59:55','',52,'http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_66902.png',0,'attachment','image/png',0),(675,2,'2018-11-21 09:56:51','2018-11-21 08:56:51','','screenshot_66925','','inherit','open','closed','','screenshot_66925','','','2018-11-21 09:59:52','2018-11-21 08:59:52','',52,'http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_66925.png',0,'attachment','image/png',0),(676,2,'2018-11-21 10:08:55','2018-11-21 09:08:55','<blockquote>2D graphics library published on <a href=\"https://github.com/androdlang/TFTShape\">GitHub</a>.</blockquote>\r\n<h6><img class=\"alignleft wp-image-675 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_66925.png\" alt=\"screenshot_66925\" width=\"240\" height=\"320\" /> <img class=\"alignleft wp-image-674 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_66902.png\" alt=\"screenshot_66902\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-673 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_51387.png\" alt=\"screenshot_51387\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-672 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_51372.png\" alt=\"screenshot_51372\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-671 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_51345.png\" alt=\"screenshot_51345\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-670 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_35854.png\" alt=\"screenshot_35854\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-668 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_35845.png\" alt=\"screenshot_35845\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-669 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_35853.png\" alt=\"screenshot_35853\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-667 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_20287.png\" alt=\"screenshot_20287\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-666 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_20266.png\" alt=\"screenshot_20266\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-665 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_20260.png\" alt=\"screenshot_20260\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-664 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_4598.png\" alt=\"screenshot_4598\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-663 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_4572.png\" alt=\"screenshot_4572\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-662 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_4571.png\" alt=\"screenshot_4571\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-661 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_4564.png\" alt=\"screenshot_4564\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-660 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_4559.png\" alt=\"screenshot_4559\" width=\"240\" height=\"320\" /></h6>\r\n<h6><img class=\"size-full wp-image-659 aligncenter\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_4554.png\" alt=\"screenshot_4554\" width=\"240\" height=\"320\" /></h6>\r\n<h6></h6>\r\n<blockquote>&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\nPBRComposer V1.00 released.\r\n<img class=\"alignnone size-full wp-image-546\" src=\"http://johann.langhofer.net/wp-content/uploads/2017/08/screen4.jpg\" alt=\"screen4\" width=\"1492\" height=\"839\" />\r\n<a href=\"http://johann.langhofer.net/PBRComposer\">LiveDemo (click \'Load\' to recall presets)</a>\r\n<a href=\"https://github.com/androdlang/PBRComposer\">Project on GitHub</a>\r\n\r\n<img class=\"alignnone size-full wp-image-547\" src=\"http://johann.langhofer.net/wp-content/uploads/2017/08/screen6.jpg\" alt=\"screen6\" width=\"1996\" height=\"476\" />\r\n<img class=\"alignnone size-full wp-image-549\" src=\"http://johann.langhofer.net/wp-content/uploads/2017/08/screen10.jpg\" alt=\"screen10\" width=\"2720\" height=\"470\" />\r\n<img class=\"alignnone size-full wp-image-564\" src=\"http://johann.langhofer.net/wp-content/uploads/2017/08/demos.jpg\" alt=\"demos\" width=\"2100\" height=\"2800\" /></blockquote>\r\n<blockquote>The following image was modeled with Blender, textures were generated with FilterForge 6.0 and rendered with Babylon.js (right click for better resolution)\r\n<img class=\"alignnone size-full wp-image-531\" src=\"http://johann.langhofer.net/wp-content/uploads/2017/08/amboss.jpg\" alt=\"amboss\" width=\"1372\" height=\"799\" />\r\n\r\n<a href=\"http://johann.langhofer.net/candle/\">Candles realtime simulation with pixi.js </a>\r\n<img class=\"alignnone size-medium wp-image-509\" src=\"http://johann.langhofer.net/wp-content/uploads/2017/03/screen-300x257.jpg\" alt=\"screen\" width=\"300\" height=\"257\" /></blockquote>\r\n<blockquote><a href=\"http://johann.langhofer.net/escher/mirrorcubes.html\">Mirror-Cubes </a>\r\n<img class=\"alignnone size-medium wp-image-499\" src=\"http://johann.langhofer.net/wp-content/uploads/2016/04/screen-300x207.jpg\" alt=\"screen\" width=\"300\" height=\"207\" /></blockquote>\r\nUseful links:\r\n<a href=\"http://thebookofshaders.com/\">the book of shaders</a>\r\n<a href=\"http://editor.thebookofshaders.com/\">EDITOR the book of shaders</a>\r\n<a href=\"http://www.cdglabs.org/Shadershop/\">shadershop</a>\r\n<a href=\"http://www.iquilezles.org/\">!!iquilezles!!</a>','3D Graphik','','inherit','closed','closed','','52-revision-v1','','','2018-11-21 10:08:55','2018-11-21 09:08:55','',52,'http://johann.langhofer.net/52-revision-v1/',0,'revision','',0),(677,2,'2022-02-16 22:12:51','0000-00-00 00:00:00','[supsystic-gallery id=\"1\"]','Gallery Preview','','draft','open','open','','','','','2022-02-16 22:12:51','2022-02-16 21:12:51','',0,'http://johann.langhofer.net/?p=677',0,'post','',0),(678,2,'2018-11-21 10:11:08','2018-11-21 09:11:08','[supsystic-gallery id=\"8\"]','Gallery Preview','','inherit','closed','closed','','677-revision-v1','','','2018-11-21 10:11:08','2018-11-21 09:11:08','',677,'http://johann.langhofer.net/677-revision-v1/',0,'revision','',0),(679,2,'2018-11-21 10:12:06','2018-11-21 09:12:06','<blockquote>2D graphics library published on <a href=\"https://github.com/androdlang/TFTShape\">GitHub</a>.\r\n\r\n[supsystic-gallery id=8]\r\n\r\n&nbsp;</blockquote>\r\n<h6><img class=\"alignleft wp-image-675 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_66925.png\" alt=\"screenshot_66925\" width=\"240\" height=\"320\" /> <img class=\"alignleft wp-image-674 size-full\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_66902.png\" alt=\"screenshot_66902\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-673 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_51387.png\" alt=\"screenshot_51387\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-672 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_51372.png\" alt=\"screenshot_51372\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-671 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_51345.png\" alt=\"screenshot_51345\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-670 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_35854.png\" alt=\"screenshot_35854\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-668 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_35845.png\" alt=\"screenshot_35845\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-669 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_35853.png\" alt=\"screenshot_35853\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-667 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_20287.png\" alt=\"screenshot_20287\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-666 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_20266.png\" alt=\"screenshot_20266\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-665 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_20260.png\" alt=\"screenshot_20260\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-664 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_4598.png\" alt=\"screenshot_4598\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-663 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_4572.png\" alt=\"screenshot_4572\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-662 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_4571.png\" alt=\"screenshot_4571\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-661 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_4564.png\" alt=\"screenshot_4564\" width=\"240\" height=\"320\" /> <img class=\"size-full wp-image-660 alignleft\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_4559.png\" alt=\"screenshot_4559\" width=\"240\" height=\"320\" /></h6>\r\n<h6><img class=\"size-full wp-image-659 aligncenter\" src=\"http://johann.langhofer.net/wp-content/uploads/2018/11/screenshot_4554.png\" alt=\"screenshot_4554\" width=\"240\" height=\"320\" /></h6>\r\n<h6></h6>\r\n<blockquote>&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\nPBRComposer V1.00 released.\r\n<img class=\"alignnone size-full wp-image-546\" src=\"http://johann.langhofer.net/wp-content/uploads/2017/08/screen4.jpg\" alt=\"screen4\" width=\"1492\" height=\"839\" />\r\n<a href=\"http://johann.langhofer.net/PBRComposer\">LiveDemo (click \'Load\' to recall presets)</a>\r\n<a href=\"https://github.com/androdlang/PBRComposer\">Project on GitHub</a>\r\n\r\n<img class=\"alignnone size-full wp-image-547\" src=\"http://johann.langhofer.net/wp-content/uploads/2017/08/screen6.jpg\" alt=\"screen6\" width=\"1996\" height=\"476\" />\r\n<img class=\"alignnone size-full wp-image-549\" src=\"http://johann.langhofer.net/wp-content/uploads/2017/08/screen10.jpg\" alt=\"screen10\" width=\"2720\" height=\"470\" />\r\n<img class=\"alignnone size-full wp-image-564\" src=\"http://johann.langhofer.net/wp-content/uploads/2017/08/demos.jpg\" alt=\"demos\" width=\"2100\" height=\"2800\" /></blockquote>\r\n<blockquote>The following image was modeled with Blender, textures were generated with FilterForge 6.0 and rendered with Babylon.js (right click for better resolution)\r\n<img class=\"alignnone size-full wp-image-531\" src=\"http://johann.langhofer.net/wp-content/uploads/2017/08/amboss.jpg\" alt=\"amboss\" width=\"1372\" height=\"799\" />\r\n\r\n<a href=\"http://johann.langhofer.net/candle/\">Candles realtime simulation with pixi.js </a>\r\n<img class=\"alignnone size-medium wp-image-509\" src=\"http://johann.langhofer.net/wp-content/uploads/2017/03/screen-300x257.jpg\" alt=\"screen\" width=\"300\" height=\"257\" /></blockquote>\r\n<blockquote><a href=\"http://johann.langhofer.net/escher/mirrorcubes.html\">Mirror-Cubes </a>\r\n<img class=\"alignnone size-medium wp-image-499\" src=\"http://johann.langhofer.net/wp-content/uploads/2016/04/screen-300x207.jpg\" alt=\"screen\" width=\"300\" height=\"207\" /></blockquote>\r\nUseful links:\r\n<a href=\"http://thebookofshaders.com/\">the book of shaders</a>\r\n<a href=\"http://editor.thebookofshaders.com/\">EDITOR the book of shaders</a>\r\n<a href=\"http://www.cdglabs.org/Shadershop/\">shadershop</a>\r\n<a href=\"http://www.iquilezles.org/\">!!iquilezles!!</a>','3D Graphik','','inherit','closed','closed','','52-revision-v1','','','2018-11-21 10:12:06','2018-11-21 09:12:06','',52,'http://johann.langhofer.net/52-revision-v1/',0,'revision','',0),(680,2,'2018-11-21 10:13:07','2018-11-21 09:13:07','<blockquote>2D graphics library published on <a href=\"https://github.com/androdlang/TFTShape\">GitHub</a>.\r\n\r\n[supsystic-gallery id=8]\r\n\r\n&nbsp;</blockquote>\r\n&nbsp;\r\n<h6></h6>\r\n<blockquote>PBRComposer V1.00 released.\r\n<img class=\"alignnone size-full wp-image-546\" src=\"http://johann.langhofer.net/wp-content/uploads/2017/08/screen4.jpg\" alt=\"screen4\" width=\"1492\" height=\"839\" />\r\n<a href=\"http://johann.langhofer.net/PBRComposer\">LiveDemo (click \'Load\' to recall presets)</a>\r\n<a href=\"https://github.com/androdlang/PBRComposer\">Project on GitHub</a>\r\n\r\n<img class=\"alignnone size-full wp-image-547\" src=\"http://johann.langhofer.net/wp-content/uploads/2017/08/screen6.jpg\" alt=\"screen6\" width=\"1996\" height=\"476\" />\r\n<img class=\"alignnone size-full wp-image-549\" src=\"http://johann.langhofer.net/wp-content/uploads/2017/08/screen10.jpg\" alt=\"screen10\" width=\"2720\" height=\"470\" />\r\n<img class=\"alignnone size-full wp-image-564\" src=\"http://johann.langhofer.net/wp-content/uploads/2017/08/demos.jpg\" alt=\"demos\" width=\"2100\" height=\"2800\" /></blockquote>\r\n<blockquote>The following image was modeled with Blender, textures were generated with FilterForge 6.0 and rendered with Babylon.js (right click for better resolution)\r\n<img class=\"alignnone size-full wp-image-531\" src=\"http://johann.langhofer.net/wp-content/uploads/2017/08/amboss.jpg\" alt=\"amboss\" width=\"1372\" height=\"799\" />\r\n\r\n<a href=\"http://johann.langhofer.net/candle/\">Candles realtime simulation with pixi.js </a>\r\n<img class=\"alignnone size-medium wp-image-509\" src=\"http://johann.langhofer.net/wp-content/uploads/2017/03/screen-300x257.jpg\" alt=\"screen\" width=\"300\" height=\"257\" /></blockquote>\r\n<blockquote><a href=\"http://johann.langhofer.net/escher/mirrorcubes.html\">Mirror-Cubes </a>\r\n<img class=\"alignnone size-medium wp-image-499\" src=\"http://johann.langhofer.net/wp-content/uploads/2016/04/screen-300x207.jpg\" alt=\"screen\" width=\"300\" height=\"207\" /></blockquote>\r\nUseful links:\r\n<a href=\"http://thebookofshaders.com/\">the book of shaders</a>\r\n<a href=\"http://editor.thebookofshaders.com/\">EDITOR the book of shaders</a>\r\n<a href=\"http://www.cdglabs.org/Shadershop/\">shadershop</a>\r\n<a href=\"http://www.iquilezles.org/\">!!iquilezles!!</a>','3D Graphik','','inherit','closed','closed','','52-revision-v1','','','2018-11-21 10:13:07','2018-11-21 09:13:07','',52,'http://johann.langhofer.net/52-revision-v1/',0,'revision','',0),(681,2,'2018-11-21 10:25:10','2018-11-21 09:25:10','running on an ESP32 Wrover with ILI9341-TFT Display.\r\n\r\n<a href=\"https://github.com/androdlang/TFTShape\">Githup project</a>\r\n\r\n<a href=\"http://johann.langhofer.net/3d-graphik/\">screenshots</a>\r\n\r\n&nbsp;','2D graphics library for ODROID-GO','','inherit','closed','closed','','655-revision-v1','','','2018-11-21 10:25:10','2018-11-21 09:25:10','',655,'http://johann.langhofer.net/655-revision-v1/',0,'revision','',0),(682,2,'2018-11-21 10:26:09','2018-11-21 09:26:09','running on an ESP32 Wrover with ILI9341-TFT Display.\r\n\r\n<a href=\"https://github.com/androdlang/TFTShape\">Githup project</a>\r\n\r\n<a href=\"http://johann.langhofer.net/3d-graphik/\">screenshots</a>\r\n\r\n&nbsp;','2D graphics library for ODROID-GO published','','inherit','closed','closed','','655-revision-v1','','','2018-11-21 10:26:09','2018-11-21 09:26:09','',655,'http://johann.langhofer.net/655-revision-v1/',0,'revision','',0),(685,2,'2018-12-21 08:37:51','2018-12-21 07:37:51','<blockquote>2D graphics library published on <a href=\"https://github.com/androdlang/TFTShape\">GitHub</a>.\n\n[supsystic-gallery id=8]\n\n&nbsp;</blockquote>\n&nbsp;\n<h6>&nbsp;</h6>\n<blockquote>PBRComposer V1.00 released.\n<img class=\"alignnone size-full wp-image-546\" src=\"https://johann.langhofer.net/wp-content/uploads/2017/08/screen4.jpg\" alt=\"screen4\" width=\"1492\" height=\"839\">\n<a href=\"https://johann.langhofer.net/PBRComposer\">LiveDemo (click \'Load\' to recall presets)</a>\n<a href=\"https://github.com/androdlang/PBRComposer\">Project on GitHub</a>\n\n<img class=\"alignnone size-full wp-image-547\" src=\"https://johann.langhofer.net/wp-content/uploads/2017/08/screen6.jpg\" alt=\"screen6\" width=\"1996\" height=\"476\">\n<img class=\"alignnone size-full wp-image-549\" src=\"https://johann.langhofer.net/wp-content/uploads/2017/08/screen10.jpg\" alt=\"screen10\" width=\"2720\" height=\"470\">\n<img class=\"alignnone size-full wp-image-564\" src=\"https://johann.langhofer.net/wp-content/uploads/2017/08/demos.jpg\" alt=\"demos\" width=\"2100\" height=\"2800\"></blockquote>\n<blockquote>The following image was modeled with Blender, textures were generated with FilterForge 6.0 and rendered with Babylon.js (right click for better resolution)\n<img class=\"alignnone size-full wp-image-531\" src=\"https://johann.langhofer.net/wp-content/uploads/2017/08/amboss.jpg\" alt=\"amboss\" width=\"1372\" height=\"799\">\n\n<a href=\"https://johann.langhofer.net/candle/\">Candles realtime simulation with pixi.js </a>\n<img class=\"alignnone size-medium wp-image-509\" src=\"https://johann.langhofer.net/wp-content/uploads/2017/03/screen-300x257.jpg\" alt=\"screen\" width=\"300\" height=\"257\"></blockquote>\n<blockquote><a href=\"https://johann.langhofer.net/escher/mirrorcubes.html\">Mirror-Cubes </a>\n<img class=\"alignnone size-medium wp-image-499\" src=\"https://johann.langhofer.net/wp-content/uploads/2016/04/screen-300x207.jpg\" alt=\"screen\" width=\"300\" height=\"207\"></blockquote>\nUseful links:\n<a href=\"http://thebookofshaders.com/\">the book of shaders</a>\n<a href=\"http://editor.thebookofshaders.com/\">EDITOR the book of shaders</a>\n<a href=\"http://www.cdglabs.org/Shadershop/\">shadershop</a>\n<a href=\"http://www.iquilezles.org/\">!!iquilezles!!</a>','3D Graphik','','inherit','closed','closed','','52-revision-v1','','','2018-12-21 08:37:51','2018-12-21 07:37:51','',52,'https://johann.langhofer.net/52-revision-v1/',0,'revision','',0),(687,2,'2018-12-21 08:41:33','2018-12-21 07:41:33','<blockquote>Homemade modified CO2 Laser-Cutter K40 (40 Watt):\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0304-e1481152678829-382x215.jpg\" alt=\"\">\nmotivation for upgrading:\n<ul>\n 	<li>bigger workspace</li>\n 	<li>air-assist</li>\n 	<li>opensource controller</li>\n 	<li>standalone device</li>\n 	<li>focus gauge</li>\n 	<li>Z-table</li>\n 	<li>opensource software</li>\n 	<li>inlens laserpointerThe project has finished now. Here are some details of my experiences:\n<b>\nworkspace </b>\nThe workspace has been expanded from original dimensions (300 x 200 x 80) to 340 x 270 x 80 mm. Some \"heavy\" modifications were neccessary, i.e. removing some distance holders on the Y-axis, removing the dust inlet, cutting the I-profile on the rear side (see pictures), removing the ground plate distance holders, reposition both mirrors on the transport, changing the dual shaft coupling. Best practise for all this modifications: remove the whole transport for better working outside the main casing.\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/11/DSC_0280.jpg\" alt=\"\">\nCutting the I-profile gives more space in Y-direction\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/11/DSC_0279-382x215.jpg\" alt=\"\">\nChanging the dual shaft coupling\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/11/DSC_0280_-382x215.jpg\" alt=\"\">\nDue to the bigger workspace, the endstop parts have to be repositioned. After some cutting experience, I don\'t use the endstops anymore because my normal cutting workflow is: manually positioning the transport to the coordinates of the workpiece and start the job. With some pre/post G-codes you can first remember the actual (manual) position and return to this position afterwards, there is no need of a homing process. The only thing you have to take care is not exceeding your workspace dimensions by your overall cutting rectangle. Anyway, here are some pictures of my endstops if someone want to mount them.\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/11/DSC_0284-382x215.jpg\" alt=\"\">\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/11/DSC_0283-382x215.jpg\" alt=\"\">\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/11/DSC_0278-382x215.jpg\" alt=\"\">\n\n<b>air-assist</b>\nThe first attempt was to use a very cheap air pressure pump, typically used in some blood-pressure gauges. For driving this pump, an electrical wiring was needed. The nozzle was a piece of pom milled to the dimensions of the lens tube.\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/11/DSC_0275-382x215.jpg\" alt=\"\">\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/11/DSC_0277-382x215.jpg\" alt=\"\">\nAfter some days, the pump gave up its operation (was very loud but without generating air pressure anymore), so I desided to rework the air-assist, not at least because the airflow was not sufficient enough. The new air-assist has now an airbrush-compressor, a metal nozzle and is controlled by a special g-code (fan-on/off) which in turn triggers an <a href=\"https://www.arduino.cc/en/Main/ArduinoBoardProMini\">arduino-mini</a> connected with a <a href=\"http://www.instructables.com/id/RF-315433-MHz-Transmitter-receiver-Module-and-Ardu/\">433-MHz-Transmitter-Module</a>. So I can plug the compressor to a wireless outlet and is runnung only during the cutting process. The compressor (4bar, 12 l/min) is very noiseless, so you can operate this device without problems in your home environment. <a href=\"http://www.ebay.at/itm/272368678874?clk_rvr_id=1136404472251&amp;rmvSB=true\">PROFI AIRBRUSH PINSEL KOMPRESSOR KOMPLETT-SET</a>\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0302-382x215.jpg\" alt=\"\">\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0301-382x215.jpg\" alt=\"\">\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0307-382x215.jpg\" alt=\"\">\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0306-382x215.jpg\" alt=\"\">\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0309-382x215.jpg\" alt=\"\">\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0308-382x215.jpg\" alt=\"\">\nThere was an empty hole on the back-case with a perfect diameter matching the compressor connection :)\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0315-e1481278178724-1024x576.jpg\" alt=\"\">\nThe wiring for the old pump has been removed, the wiring for the focus-gauge has been added to the airbrush tube.\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0316-1024x576.jpg\" alt=\"\">\n\n<b>opensource controller</b>\nIn many other projects I used the combination Arduino-Mega with ramps 1.4 and pololu drivers and Marlin software. But since this hardware is a bit oldfashioned and slow, I decided to replace the original Chinese-Japanese? m2NANO-board with a smoothieboard. I used the small \"X3\" configuration (no Ethernet, but with all necessary interfacing components onboard) and I\'m very happy about this decision, the whole configuration process with smoothieware is a lot easier and more convenient than with Marlin.\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0310-1024x576.jpg\" alt=\"\">\n\n<b>standalone device</b>\nTo use the lasercutter as a standalone device, a graphical interface board is needed. Because smoothieboad supports several LCD display controller, I integrated the very cheap Reprap \"Full Graphic Smart Controller\" into the Frontpanel. Only a couple of wires were necessary and the cutting jobs can now started via the display and rotary-encoder. Smoothieboard has its own sd-card integrated, so I dont\'t use the extra card slot provided by the Smart-Controller.\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0303-1024x576.jpg\" alt=\"\">\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0314-1024x576.jpg\" alt=\"\">\n\n<b>focus gauge</b>\nAfter several experiments with small red laser modules, the idea came up, not only to use the red-dot for marking the position where the big laser is starting, but also to monitor the focus point. In short, using two rays with a certain angle intersecting on the focal point of the big laser gives a perfect way to see if a workpiece is in focus or how much it is out of focus. Even an autofocus-function could be done relative easily by watching the red-dots (with a small camera) and measuring the distance.\nHere you can see the workpiece is in focus:\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0305-e1481243918697.jpg\" alt=\"\">\nAnd here the workpiece is out of focus:\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0311-e1481270498781-780x1024.jpg\" alt=\"\">\nIt\'s very easy to adjust the red dots to the focal point: just cut/engrave a line from left to right with a left-right-skewed workpiece and move afterwards the head position over the smallest footprint. Then adjust the points to a single overlapped point. With this method you don\'t have to know the exact focal distance!\n\n<b>Z-table</b>\nI\'ve seen an article <a href=\"http://www.tom-aes.com/?p=26\">LightObject.com: Power table/ bed kit for K40 small laser machine</a> and decided to build this by my own because I had some pulleys, belt and motors laying around. It took about one day, and the complete Table was finished and well working. I ditn\'t build the upper frame because the workspace would be affected and the bottom bearings are mounted stable enough to hold the force from the driving belt. In conjunction with the software \"VisiCut\" G-codes for the Z-axis (focus) are interpreted and executed now, this is very useful when engraving and cutting in one process. Engraving works better if outside of focus (darker burning) whereas cutting has the best results when the workpiece is inbetween the focus.\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/11/DSC_0287-382x215.jpg\" alt=\"\">\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/11/DSC_0288-382x215.jpg\" alt=\"\">\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0312-1024x576.jpg\" alt=\"\">\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0313-1024x576.jpg\" alt=\"\">\n\n<b>opensource software</b>\nMy best and efficient way to get perfect cuttings and/or engravings is the combination of <a href=\"https://inkscape.org/de/\">inkscape </a> and <a href=\"https://hci.rwth-aachen.de/visicut\">VisiCut</a>. Especially the ability to define cuttings per script (<a href=\"https://github.com/t-oster/VisiCut/wiki/LaserScript\">Visicut-Laserscript</a>) and the support of <a href=\"https://github.com/t-oster/VisiCut/wiki/Parametric-SVG\">parametric SVG</a> is really a highlight not seen by other software (LaserWeb3, Repetier Host, Pronterface etc.). Furthermore, with Visicut you can easily map SVG-attributes of your choice (i.e. pen-color, thickness etc.) to the three main parameters needed for cutting/marking/engraving: speed, power and focus. The output of VisiCut can directly printed (cutted) or saved in the sd-card to be executed from the lasercutter itself as a standalone device. I prefer the last method because the serial connection (via USB) between computer and lasercutter is not so stable especially when pumps and fans are switched. In this situation you often hear the typical \"USB-ding-dong\" and you know the client has been disconnected and cutting has stopped :(\n\n<b> \"inlens-laserpointer\" </b>\nMotivation for this expansion: it\'s very annoying adjusting the mirrors after some mechanical work or reassembling the head after cleaning the lens. Therefore I constructed a simple mechanism to bring a laserpointer into the ray path. All you need is a ballbearing from an old harddisk, a small laserpointer module, a 3V-battery with holder and toggle switch and a mounting block (I used an old 3d printerpart). The laserpointer has two positions, in-path and out-of-path, it can be toggled from the working side, no need to open the tube casing. I used a soft aluminium wire (1.5mm diameter) to adjust the laser and connect the lasermodule with the ballbearing. The ballbearing is practical without backlash, so you can exactly reposition the laser when needed. To mount the block, I had to drill a single hole.\nThe battery-holder including a switch is mounted with a doublesided tape. Adjusting the laserpointer is relatively easy: make a testshot to a paper, switch OFF the machine, toggle the laserpointer, switch on battery and bend the aluminium wire until you get the spot on the paper. Repeat it on all extreme positions. Once done, you everytime can readjust your mirrors or head without activating the CO2 laser.\nDetail view\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0328-e1481631613670-1024x576.jpg\" alt=\"\">\nBattery holder with toggle switch\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0326-1024x576.jpg\" alt=\"\">\nOutside path\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0323-1024x576.jpg\" alt=\"\">\nInside path\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0322-1024x576.jpg\" alt=\"\">\nThe middle dot is coming from the inlens laser (matching exactly the CO2 laser), the dot underneath is the dots coming from the focus gauge.\n<img src=\"https://johann.langhofer.net/wp-content/uploads/2016/12/DSC_0327-e1481632578914-1024x783.jpg\" alt=\"\"></li>\n</ul>\n</blockquote>\n<blockquote>Homemade Laser-Cutter/engraver (6 Watt):\nController: Arduino-Mega +Ramps 1.4\nWorkarea: DIN-A3\nLaserdiode: Lasertack 445nm 6W\nTransport: Core-XY\nMechanical parts: BAUHAUS (German hardware store)\nSoftware: Inkscape + Universal GCode sender</blockquote>\n[supsystic-gallery id=\'7\']\n<blockquote>Laser-Cutter pprojects done with GCC Spirit GLS (60 Watt)\nWorkarea: 960 x 610 x 180 mm</blockquote>\n[supsystic-gallery id=4 position=center]','Lasercutter','','inherit','closed','closed','','49-revision-v1','','','2018-12-21 08:41:33','2018-12-21 07:41:33','',49,'https://johann.langhofer.net/49-revision-v1/',0,'revision','',0),(689,2,'2018-12-21 08:51:52','2018-12-21 07:51:52','running on an ESP32 Wrover with ILI9341-TFT Display.\n\n<a href=\"https://github.com/androdlang/TFTShape\">Githup project</a>\n\n<a href=\"https://johann.langhofer.net/3d-graphik/\">screenshots</a>\n\n&nbsp;','2D graphics library for ODROID-GO published','','inherit','closed','closed','','655-revision-v1','','','2018-12-21 08:51:52','2018-12-21 07:51:52','',655,'https://johann.langhofer.net/655-revision-v1/',0,'revision','',0),(693,2,'2019-04-04 17:44:16','2019-04-04 15:44:16','Useful software:\n\nKrita\n<blockquote>ArtRage 4\nSketchbook pro\nInkscape\nLightroom</blockquote>\n[supsystic-gallery id=\'2\' position=\'center\']','Art','','inherit','closed','closed','','112-revision-v1','','','2019-04-04 17:44:16','2019-04-04 15:44:16','',112,'https://johann.langhofer.net/112-revision-v1/',0,'revision','',0),(694,2,'2019-04-04 17:44:37','2019-04-04 15:44:37','','face4','','inherit','open','closed','','face4','','','2019-04-04 17:44:37','2019-04-04 15:44:37','',0,'https://johann.langhofer.net/wp-content/uploads/2019/04/face4.jpg',0,'attachment','image/jpeg',0),(695,2,'2019-04-04 17:44:45','2019-04-04 15:44:45','','face3_002','','inherit','open','closed','','face3_002','','','2019-04-04 17:44:45','2019-04-04 15:44:45','',0,'https://johann.langhofer.net/wp-content/uploads/2019/04/face3_002.jpg',0,'attachment','image/jpeg',0),(696,2,'2019-04-04 17:44:55','2019-04-04 15:44:55','','face5','','inherit','open','closed','','face5','','','2019-04-04 17:44:55','2019-04-04 15:44:55','',0,'https://johann.langhofer.net/wp-content/uploads/2019/04/face5.jpg',0,'attachment','image/jpeg',0),(697,2,'2019-04-04 17:45:23','2019-04-04 15:45:23','','head','','inherit','open','closed','','head','','','2019-04-04 17:45:23','2019-04-04 15:45:23','',0,'https://johann.langhofer.net/wp-content/uploads/2019/04/head.jpg',0,'attachment','image/jpeg',0),(698,2,'2019-04-04 17:45:35','2019-04-04 15:45:35','','valuesStudy','','inherit','open','closed','','valuesstudy','','','2019-04-04 17:45:35','2019-04-04 15:45:35','',0,'https://johann.langhofer.net/wp-content/uploads/2019/04/valuesStudy.jpg',0,'attachment','image/jpeg',0),(699,2,'2019-04-04 17:45:52','2019-04-04 15:45:52','','SexyKatarina','','inherit','open','closed','','sexykatarina','','','2019-04-04 17:45:52','2019-04-04 15:45:52','',0,'https://johann.langhofer.net/wp-content/uploads/2019/04/SexyKatarina.jpg',0,'attachment','image/jpeg',0),(700,2,'2019-04-04 17:46:05','2019-04-04 15:46:05','','apple_002','','inherit','open','closed','','apple_002','','','2019-04-04 17:46:05','2019-04-04 15:46:05','',0,'https://johann.langhofer.net/wp-content/uploads/2019/04/apple_002.jpg',0,'attachment','image/jpeg',0),(701,2,'2019-04-04 17:46:18','2019-04-04 15:46:18','','citrus_001','','inherit','open','closed','','citrus_001','','','2019-04-04 17:46:18','2019-04-04 15:46:18','',0,'https://johann.langhofer.net/wp-content/uploads/2019/04/citrus_001.jpg',0,'attachment','image/jpeg',0),(702,2,'2019-04-04 17:46:27','2019-04-04 15:46:27','','mountain','','inherit','open','closed','','mountain','','','2019-04-04 17:46:27','2019-04-04 15:46:27','',0,'https://johann.langhofer.net/wp-content/uploads/2019/04/mountain.jpg',0,'attachment','image/jpeg',0),(703,2,'2019-04-04 17:46:44','2019-04-04 15:46:44','','firstoil','','inherit','open','closed','','firstoil','','','2019-04-04 17:46:44','2019-04-04 15:46:44','',0,'https://johann.langhofer.net/wp-content/uploads/2019/04/firstoil.jpg',0,'attachment','image/jpeg',0),(704,2,'2019-04-04 17:52:12','2019-04-04 15:52:12','Useful software:\n\nKrita\n\n[supsystic-gallery id=9]\n<blockquote>ArtRage 4\nSketchbook pro\nInkscape\nLightroom</blockquote>\n[supsystic-gallery id=\'2\' position=\'center\']','Art','','inherit','closed','closed','','112-revision-v1','','','2019-04-04 17:52:12','2019-04-04 15:52:12','',112,'https://johann.langhofer.net/112-revision-v1/',0,'revision','',0),(705,2,'2019-04-04 18:32:39','2019-04-04 16:32:39','','shoe','','inherit','open','closed','','shoe','','','2019-04-04 18:32:39','2019-04-04 16:32:39','',0,'https://johann.langhofer.net/wp-content/uploads/2019/04/shoe.jpg',0,'attachment','image/jpeg',0),(706,2,'2019-04-04 18:35:04','2019-04-04 16:35:04','[supsystic-gallery id=\"9\"]','Gallery Preview','','inherit','closed','closed','','677-revision-v1','','','2019-04-04 18:35:04','2019-04-04 16:35:04','',677,'https://johann.langhofer.net/677-revision-v1/',0,'revision','',0),(707,2,'2019-04-04 23:02:50','2019-04-04 21:02:50','','Cute-baby-face','','inherit','open','closed','','cute-baby-face','','','2019-04-04 23:02:50','2019-04-04 21:02:50','',0,'https://johann.langhofer.net/wp-content/uploads/2019/04/Cute-baby-face.jpg',0,'attachment','image/jpeg',0),(709,2,'2019-04-05 09:01:49','2019-04-05 07:01:49','','face6','','inherit','open','closed','','face6-2','','','2019-04-05 09:01:49','2019-04-05 07:01:49','',0,'https://johann.langhofer.net/wp-content/uploads/2019/04/face6-1.jpg',0,'attachment','image/jpeg',0),(711,2,'2019-04-16 01:43:17','2019-04-15 23:43:17','','face7','','inherit','open','closed','','face7','','','2019-04-16 01:43:17','2019-04-15 23:43:17','',0,'https://johann.langhofer.net/wp-content/uploads/2019/04/face7.jpg',0,'attachment','image/jpeg',0),(712,2,'2019-04-16 01:43:20','2019-04-15 23:43:20','','face8','','inherit','open','closed','','face8','','','2019-04-16 01:43:20','2019-04-15 23:43:20','',0,'https://johann.langhofer.net/wp-content/uploads/2019/04/face8.jpg',0,'attachment','image/jpeg',0),(713,2,'2019-04-16 01:43:25','2019-04-15 23:43:25','','girlie','','inherit','open','closed','','girlie','','','2019-04-16 01:43:25','2019-04-15 23:43:25','',0,'https://johann.langhofer.net/wp-content/uploads/2019/04/girlie.jpg',0,'attachment','image/jpeg',0),(714,2,'2019-04-16 01:43:36','2019-04-15 23:43:36','','girlie2','','inherit','open','closed','','girlie2','','','2019-04-16 01:43:36','2019-04-15 23:43:36','',0,'https://johann.langhofer.net/wp-content/uploads/2019/04/girlie2.jpg',0,'attachment','image/jpeg',0),(715,2,'2019-04-17 22:43:10','2019-04-17 20:43:10','<!-- wp:paragraph -->\n<p>see <a href=\"https://johann.langhofer.net/art/\">https://johann.langhofer.net/art/</a></p>\n<!-- /wp:paragraph -->','Pictures drawn with Krita','','publish','open','open','','pictures-drawn-with-krita','','','2019-04-17 22:46:32','2019-04-17 20:46:32','',0,'https://johann.langhofer.net/?p=715',0,'post','',0),(716,2,'2019-04-17 22:43:10','2019-04-17 20:43:10','','Pictures drawn with Krita','','inherit','closed','closed','','715-revision-v1','','','2019-04-17 22:43:10','2019-04-17 20:43:10','',715,'https://johann.langhofer.net/715-revision-v1/',0,'revision','',0),(718,2,'2019-04-17 22:46:32','2019-04-17 20:46:32','<!-- wp:paragraph -->\n<p>see <a href=\"https://johann.langhofer.net/art/\">https://johann.langhofer.net/art/</a></p>\n<!-- /wp:paragraph -->','Pictures drawn with Krita','','inherit','closed','closed','','715-revision-v1','','','2019-04-17 22:46:32','2019-04-17 20:46:32','',715,'https://johann.langhofer.net/715-revision-v1/',0,'revision','',0),(719,2,'2021-04-03 22:02:27','2021-04-03 20:02:27','','s9_001','','inherit','open','closed','','s9_001','','','2021-04-03 22:03:43','2021-04-03 20:03:43','',0,'https://johann.langhofer.net/wp-content/uploads/2021/04/s9_001.jpg',0,'attachment','image/jpeg',0),(720,2,'2021-04-03 22:03:46','2021-04-03 20:03:46','','s10','','inherit','open','closed','','s10','','','2021-04-03 22:05:03','2021-04-03 20:05:03','',0,'https://johann.langhofer.net/wp-content/uploads/2021/04/s10.jpg',0,'attachment','image/jpeg',0),(721,2,'2021-04-03 22:05:18','2021-04-03 20:05:18','','s11','','inherit','open','closed','','s11','','','2021-04-03 22:05:56','2021-04-03 20:05:56','',0,'https://johann.langhofer.net/wp-content/uploads/2021/04/s11.jpg',0,'attachment','image/jpeg',0),(722,2,'2021-04-03 22:06:00','2021-04-03 20:06:00','','s12','','inherit','open','closed','','s12','','','2021-04-03 22:07:31','2021-04-03 20:07:31','',0,'https://johann.langhofer.net/wp-content/uploads/2021/04/s12.jpg',0,'attachment','image/jpeg',0),(723,2,'2021-04-03 22:07:37','2021-04-03 20:07:37','','s13_001','','inherit','open','closed','','s13_001','','','2021-04-03 22:08:15','2021-04-03 20:08:15','',0,'https://johann.langhofer.net/wp-content/uploads/2021/04/s13_001.jpg',0,'attachment','image/jpeg',0),(724,2,'2021-04-03 22:08:19','2021-04-03 20:08:19','','s14','','inherit','open','closed','','s14','','','2021-04-03 22:08:54','2021-04-03 20:08:54','',0,'https://johann.langhofer.net/wp-content/uploads/2021/04/s14.jpg',0,'attachment','image/jpeg',0),(725,2,'2021-04-03 22:08:58','2021-04-03 20:08:58','','s15','','inherit','open','closed','','s15','','','2021-04-03 22:09:33','2021-04-03 20:09:33','',0,'https://johann.langhofer.net/wp-content/uploads/2021/04/s15.jpg',0,'attachment','image/jpeg',0),(726,2,'2021-04-03 22:09:34','2021-04-03 20:09:34','','s16','','inherit','open','closed','','s16','','','2021-04-03 22:10:08','2021-04-03 20:10:08','',0,'https://johann.langhofer.net/wp-content/uploads/2021/04/s16.jpg',0,'attachment','image/jpeg',0),(728,2,'2021-04-03 22:11:04','2021-04-03 20:11:04','','s17_001','','inherit','open','closed','','s17_001','','','2021-04-03 22:11:32','2021-04-03 20:11:32','',0,'https://johann.langhofer.net/wp-content/uploads/2021/04/s17_001.jpg',0,'attachment','image/jpeg',0),(729,2,'2021-04-03 22:11:44','2021-04-03 20:11:44','','s18_001','','inherit','open','closed','','s18_001','','','2021-04-03 22:13:14','2021-04-03 20:13:14','',0,'https://johann.langhofer.net/wp-content/uploads/2021/04/s18_001.jpg',0,'attachment','image/jpeg',0),(731,2,'2021-04-03 22:14:02','2021-04-03 20:14:02','','l1_002','','inherit','open','closed','','l1_002','','','2021-04-03 22:14:30','2021-04-03 20:14:30','',0,'https://johann.langhofer.net/wp-content/uploads/2021/04/l1_002.jpg',0,'attachment','image/jpeg',0),(732,2,'2021-04-03 22:19:39','2021-04-03 20:19:39','','s54_004','','inherit','open','closed','','s54_004','','','2021-04-03 22:20:26','2021-04-03 20:20:26','',0,'https://johann.langhofer.net/wp-content/uploads/2021/04/s54_004.jpg',0,'attachment','image/jpeg',0),(733,2,'2021-04-03 22:20:30','2021-04-03 20:20:30','','s53_001','','inherit','open','closed','','s53_001','','','2021-04-03 23:00:28','2021-04-03 21:00:28','',737,'https://johann.langhofer.net/wp-content/uploads/2021/04/s53_001.jpg',0,'attachment','image/jpeg',0),(736,2,'2021-04-03 22:26:29','2021-04-03 20:26:29','WACOM Intuos Pro Tablet\n\n[supsystic-gallery id=10]\n\nUseful software:\n\nKrita\n\n[supsystic-gallery id=9]\n<blockquote>ArtRage 4\nSketchbook pro\nInkscape\nLightroom</blockquote>\n[supsystic-gallery id=\'2\' position=\'center\']','Art','','inherit','closed','closed','','112-revision-v1','','','2021-04-03 22:26:29','2021-04-03 20:26:29','',112,'https://johann.langhofer.net/112-revision-v1/',0,'revision','',0),(737,2,'2021-04-03 22:31:27','2021-04-03 20:31:27','Works excellent, see drawings here:<a href=\"https://johann.langhofer.net/art/#tablet\">Art</a>\n\n<img class=\"alignnone size-full wp-image-733\" src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/s53_001-e1617481248530.jpg\" alt=\"\" width=\"1920\" height=\"1234\" />','Testing WACON Intuos Pro Tablet','','publish','open','open','','testing-wacon-intuos-pro-tablet','','','2021-04-03 23:01:20','2021-04-03 21:01:20','',0,'https://johann.langhofer.net/?p=737',0,'post','',0),(738,2,'2021-04-03 22:31:27','2021-04-03 20:31:27','Works excellent, see pictures here:<a href=\"https://johann.langhofer.net/art/\">Art</a>','Testing WACON Intuos Pro Tablet','','inherit','closed','closed','','737-revision-v1','','','2021-04-03 22:31:27','2021-04-03 20:31:27','',737,'https://johann.langhofer.net/737-revision-v1/',0,'revision','',0),(744,2,'2021-04-03 22:47:56','2021-04-03 20:47:56','<h2>WACOM Intuos Pro Tablet</h2>\n[supsystic-gallery id=10]\n\nUseful software:\n\nKrita\n\n[supsystic-gallery id=9]\n<blockquote>ArtRage 4\nSketchbook pro\nInkscape\nLightroom</blockquote>\n[supsystic-gallery id=\'2\' position=\'center\']','Art','','inherit','closed','closed','','112-revision-v1','','','2021-04-03 22:47:56','2021-04-03 20:47:56','',112,'https://johann.langhofer.net/112-revision-v1/',0,'revision','',0),(747,2,'2021-04-03 22:50:47','2021-04-03 20:50:47','<!-- wp:heading -->\n<h2 id=\"WACOM\">WACOM Intuos Pro Tablet</h2>\n<!-- /wp:heading -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=10]\n<!-- /wp:shortcode -->\n\n<!-- wp:paragraph -->\n<p>Useful software:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Krita</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=9]\n<!-- /wp:shortcode -->\n\n<!-- wp:quote -->\n<blockquote class=\"wp-block-quote\"><p>ArtRage 4<br>Sketchbook pro<br>Inkscape<br>Lightroom</p></blockquote>\n<!-- /wp:quote -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=\'2\' position=\'center\']\n<!-- /wp:shortcode -->','Art','','inherit','closed','closed','','112-revision-v1','','','2021-04-03 22:50:47','2021-04-03 20:50:47','',112,'https://johann.langhofer.net/112-revision-v1/',0,'revision','',0),(748,2,'2021-04-03 22:57:47','2021-04-03 20:57:47','<!-- wp:heading -->\n<h2 id=\"tablet\">WACOM Intuos Pro Tablet</h2>\n<!-- /wp:heading -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=10]\n<!-- /wp:shortcode -->\n\n<!-- wp:paragraph -->\n<p>Useful software:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Krita</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=9]\n<!-- /wp:shortcode -->\n\n<!-- wp:quote -->\n<blockquote class=\"wp-block-quote\"><p>ArtRage 4<br>Sketchbook pro<br>Inkscape<br>Lightroom</p></blockquote>\n<!-- /wp:quote -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=\'2\' position=\'center\']\n<!-- /wp:shortcode -->','Art','','inherit','closed','closed','','112-revision-v1','','','2021-04-03 22:57:47','2021-04-03 20:57:47','',112,'https://johann.langhofer.net/112-revision-v1/',0,'revision','',0),(749,2,'2021-04-03 22:59:46','2021-04-03 20:59:46','Works excellent, see pictures here:<a href=\"https://johann.langhofer.net/art/#tablet\">Art</a>','Testing WACON Intuos Pro Tablet','','inherit','closed','closed','','737-revision-v1','','','2021-04-03 22:59:46','2021-04-03 20:59:46','',737,'https://johann.langhofer.net/737-revision-v1/',0,'revision','',0),(750,2,'2021-04-03 23:00:32','2021-04-03 21:00:32','Works excellent, see pictures here:<a href=\"https://johann.langhofer.net/art/#tablet\">Art</a>\n\n<img class=\"alignnone size-full wp-image-733\" src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/s53_001-e1617481248530.jpg\" alt=\"\" width=\"1920\" height=\"1234\" />','Testing WACON Intuos Pro Tablet','','inherit','closed','closed','','737-revision-v1','','','2021-04-03 23:00:32','2021-04-03 21:00:32','',737,'https://johann.langhofer.net/737-revision-v1/',0,'revision','',0),(751,2,'2021-04-03 23:01:20','2021-04-03 21:01:20','Works excellent, see drawings here:<a href=\"https://johann.langhofer.net/art/#tablet\">Art</a>\n\n<img class=\"alignnone size-full wp-image-733\" src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/s53_001-e1617481248530.jpg\" alt=\"\" width=\"1920\" height=\"1234\" />','Testing WACON Intuos Pro Tablet','','inherit','closed','closed','','737-revision-v1','','','2021-04-03 23:01:20','2021-04-03 21:01:20','',737,'https://johann.langhofer.net/737-revision-v1/',0,'revision','',0),(752,2,'2021-04-03 23:28:35','2021-04-03 21:28:35','<p>Having some troubles to recover a \"Volkszähler\" system (server doesn\'t exists any more), I decided to build my own Smart Meter system,  user friendly, small footprint and simple to maintenance.</p>\n<p><strong>The concept:</strong> S0 Impulses are counted via interrupt on a microcontroller (ESP32) and sent to a Web-server running on a Rasperry Pi. Every time, after 60 seconds, three counter values (for each phase of the power lines) are written into a Round Robin Database (RRD) file. The graph function of RRDtool is used to present this data to a human viewer via Web-Browser.</p>\n<p><img class=\"alignnone size-full wp-image-754\" src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-03-232926.jpg\" alt=\"\" width=\"1109\" height=\"458\" /></p>\n<p><strong>The hardware configuration: </strong>ESP32 -&gt;(WLAN)-&gt;RPI2</p>\n<p><strong>Software requirements (RPI):</strong> apache2, RRDtool, php7.3, php7.3-gd</p>\n\n<!-- wp:paragraph -->\n<p>Skipping the microcontroller part (data is sent with a simple http-request <em>http://&lt;address-of-rpi>/s0.php?data=&lt;counter1>:&lt;counter2>:&lt;counter3></em>)  here are the steps and the software parts of the smart meter:</p>\n<!-- /wp:paragraph -->\n\n<p><!--StartFragment--></p>\n\n<!-- wp:paragraph -->\n<p><strong>STEP 1:</strong> Defining the database (RRD):</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":767} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002715.jpg\" alt=\"\" class=\"wp-image-767\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>Each minute the power line counter values are written into the database, Format: \'R:S:T\'<br>There are three archives in this database: one for the original data (minutes)  holding the values for 10 days, one for reduced hour-values holding 18 months, and one for reduced daily-values holding 10 years.</p>\n<!-- /wp:paragraph -->\n\n<p><!--EndFragment--><strong>Step 2</strong>: Script to permanently update the database:</p>\n\n<!-- wp:html -->\n<?php\n    shell_exec(\"rrdtool update power.rrd N:\".$_GET[\'data\']);\n ?>\n\n<!-- /wp:html -->\n\n<!-- wp:image {\"id\":765} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002610.jpg\" alt=\"\" class=\"wp-image-765\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>Step 3</strong>: Script to visualize the data: Call this script with three optional query parameters: start, end, step.  <strong>start</strong>: point where to begin viewing data i.e -1d -2M -4h, default 4h (4 hours).  <strong>end</strong>:  point where to stop viewing data (default now). <strong>step</strong>: resolution in seconds (default 60). <em>Example: http://&lt;rpi-address>/data.php?start=-2d&amp;end=-1d</em></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":763} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002239.jpg\" alt=\"\" class=\"wp-image-763\"/></figure>\n<!-- /wp:image -->','Simple Smart Meter (SSM) using Rapberry Pi and ESP32','','publish','open','open','','simple-smart-meter-ssm-using-rapberry-pi-and-esp32','','','2021-04-04 00:34:43','2021-04-03 22:34:43','',0,'https://johann.langhofer.net/?p=752',0,'post','',0),(753,2,'2021-04-03 23:28:35','2021-04-03 21:28:35','Having some troubles to recover a \"Volkszähler\" system (server doesn\'t exists any more), I decided to build my own Smart Meter system,  user friendly and simple to maintenance.\r\n\r\n<strong>The concept:</strong> S0 Impulses are counted via interrupt on a microcontroller (ESP32) and sent to a Web-server running on a Rasperry Pi. Every time, after 60 seconds, three counter values (for each phase of the power lines) are written into a Round Robin Database (RRD) file. The graph function of RRDtool is used to present this data to a human viewer via Web-Browser.\r\n\r\n&nbsp;\r\n\r\n<strong>The hardware configuration: </strong>ESP32 -&gt;(WLAN)-&gt;RPI2\r\n\r\n&nbsp;\r\n\r\n&nbsp;','Simple Smart Meter (SSM) using Rapberry Pi and ESP32','','inherit','closed','closed','','752-revision-v1','','','2021-04-03 23:28:35','2021-04-03 21:28:35','',752,'https://johann.langhofer.net/752-revision-v1/',0,'revision','',0),(754,2,'2021-04-03 23:29:56','2021-04-03 21:29:56','','Screenshot 2021-04-03 232926','','inherit','open','closed','','screenshot-2021-04-03-232926','','','2021-04-03 23:30:28','2021-04-03 21:30:28','',752,'https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-03-232926.jpg',0,'attachment','image/jpeg',0),(756,2,'2021-04-03 23:30:48','2021-04-03 21:30:48','Having some troubles to recover a \"Volkszähler\" system (server doesn\'t exists any more), I decided to build my own Smart Meter system,  user friendly and simple to maintenance.\n\n<strong>The concept:</strong> S0 Impulses are counted via interrupt on a microcontroller (ESP32) and sent to a Web-server running on a Rasperry Pi. Every time, after 60 seconds, three counter values (for each phase of the power lines) are written into a Round Robin Database (RRD) file. The graph function of RRDtool is used to present this data to a human viewer via Web-Browser.\n\n<img class=\"alignnone size-full wp-image-754\" src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-03-232926.jpg\" alt=\"\" width=\"1109\" height=\"458\" />\n\n<strong>The hardware configuration: </strong>ESP32 -&gt;(WLAN)-&gt;RPI2','Simple Smart Meter (SSM) using Rapberry Pi and ESP32','','inherit','closed','closed','','752-revision-v1','','','2021-04-03 23:30:48','2021-04-03 21:30:48','',752,'https://johann.langhofer.net/752-revision-v1/',0,'revision','',0),(758,2,'2021-04-04 00:02:06','2021-04-03 22:02:06','<p>Having some troubles to recover a \"Volkszähler\" system (server doesn\'t exists any more), I decided to build my own Smart Meter system,  user friendly and simple to maintenance.</p>\n<p><strong>The concept:</strong> S0 Impulses are counted via interrupt on a microcontroller (ESP32) and sent to a Web-server running on a Rasperry Pi. Every time, after 60 seconds, three counter values (for each phase of the power lines) are written into a Round Robin Database (RRD) file. The graph function of RRDtool is used to present this data to a human viewer via Web-Browser.</p>\n<p><img class=\"alignnone size-full wp-image-754\" src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-03-232926.jpg\" alt=\"\" width=\"1109\" height=\"458\" /></p>\n<p><strong>The hardware configuration: </strong>ESP32 -&gt;(WLAN)-&gt;RPI2</p>\n\n<!-- wp:paragraph -->\n<p>Skipping the microcontroller part (data is sent with a simple http-request http://&lt;address-of-rpi>/s0.php?data=&lt;counter1>:&lt;counter2>:&lt;counter3>)  here are the software parts of the smartmeter:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>STEP 1:</strong> Defining the database (RRD):</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>rrdtool create power.rrd \\<br>\n   --start now-2h --step 60s \\<br>\n   DS:R:GAUGE:5m:0:24000 \\<br>\n   DS:S:GAUGE:5m:0:24000 \\<br>\n   DS:T:GAUGE:5m:0:24000 \\<br>\n   RRA:AVERAGE:0.5:1m:10d \\<br>\n   RRA:AVERAGE:0.5:1h:18M \\<br>\n   RRA:AVERAGE:0.5:1d:10y</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Each minute the powerline counter values are written into the database, Format: \'R:S:T\'<br>There are three archives in this database: one for the original data (minutes)  holding the values for 10 days, one for reduced hour-values holding 18 months, and one for reduced daily-values holding 10 years.</p>\n<!-- /wp:paragraph -->\n\n<p><br /><!--StartFragment--></p>\n\n<!-- wp:paragraph -->\n<p><strong>STEP 1:</strong> Defining the database (RRD):</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>rrdtool create power.rrd \\<br>\n   --start now-2h --step 60s \\<br>\n   DS:R:GAUGE:5m:0:24000 \\<br>\n   DS:S:GAUGE:5m:0:24000 \\<br>\n   DS:T:GAUGE:5m:0:24000 \\<br>\n   RRA:AVERAGE:0.5:1m:10d \\<br>\n   RRA:AVERAGE:0.5:1h:18M \\<br>\n   RRA:AVERAGE:0.5:1d:10y</p>\n<!-- /wp:paragraph -->\n\n<p><!--EndFragment--><strong>Step 2</strong>: Script to permanently update the database:</p>\n\n<!-- wp:html -->\n<?php\n    shell_exec(\"rrdtool update power.rrd N:\".$_GET[\'data\']);\n   ?>\n<!-- /wp:html -->\n\n<!-- wp:paragraph -->\n<p><strong>Step 3</strong>: Script to visualize the data: Call this script with three optional query parameters: start, end, step.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>start: point where to begin viewing data i.e -1d -2M -4h, default 4h (4 hours)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>stop:  point where to stop viewing data (default now)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>step: resolution in seconds (default 60)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:html -->\n<?php\n$pars=<<<EOT\n DEF:R=power.rrd:R:AVERAGE \\\n CDEF:RH=R,60,* AREA:RH#f06151:R \\\n DEF:S=power.rrd:S:AVERAGE \\\n CDEF:SH=S,60,* AREA:SH#f3d24f:S:STACK \\\n DEF:T=power.rrd:T:AVERAGE \\\n CDEF:TH=T,60,*  AREA:TH#55c0d2:T:STACK\\\n CDEF:RS=RH,SH,+ CDEF:RST=RS,TH,+ \\\n GPRINT:RST:AVERAGE:\"average %2.1lf Wh\" \\\n GPRINT:RST:LAST:\"last %2.1lf Wh\"\nEOT;\n$start=isset($_GET[\'start\'])?\"-s \".$_GET[\'start\'].\" \":\" -s -4h \";\n$end=isset($_GET[\'end\'])?\" -e \".$_GET[\'end\'].\" \":\" \";\n$step=isset($_GET[\'step\'])?\" -S \".$_GET[\'step\'].\" \":\" \";\nshell_exec(\"rrdtool graph _data.png -w 1200 -h 400 \".$start.$end.$step.$pars);\n$im = imagecreatefrompng(\"_data.png\");\nheader(\'Content-Type: image/png\');\nimagepng($im);\nimagedestroy($im);\n?>\n\n<!-- /wp:html -->','Simple Smart Meter (SSM) using Rapberry Pi and ESP32','','inherit','closed','closed','','752-revision-v1','','','2021-04-04 00:02:06','2021-04-03 22:02:06','',752,'https://johann.langhofer.net/752-revision-v1/',0,'revision','',0),(759,2,'2021-04-04 00:07:36','2021-04-03 22:07:36','<p>Having some troubles to recover a \"Volkszähler\" system (server doesn\'t exists any more), I decided to build my own Smart Meter system,  user friendly and simple to maintenance.</p>\n<p><strong>The concept:</strong> S0 Impulses are counted via interrupt on a microcontroller (ESP32) and sent to a Web-server running on a Rasperry Pi. Every time, after 60 seconds, three counter values (for each phase of the power lines) are written into a Round Robin Database (RRD) file. The graph function of RRDtool is used to present this data to a human viewer via Web-Browser.</p>\n<p><img class=\"alignnone size-full wp-image-754\" src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-03-232926.jpg\" alt=\"\" width=\"1109\" height=\"458\" /></p>\n<p><strong>The hardware configuration: </strong>ESP32 -&gt;(WLAN)-&gt;RPI2</p>\n<p>Software requirements (RPI): apache2, RRDtool, php7.3, php7.3-gd</p>\n\n<!-- wp:paragraph -->\n<p>Skipping the microcontroller part (data is sent with a simple http-request http://&lt;address-of-rpi>/s0.php?data=&lt;counter1>:&lt;counter2>:&lt;counter3>)  here are the software parts of the smartmeter:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>STEP 1:</strong> Defining the database (RRD):</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>rrdtool create power.rrd \\<br>\n   --start now-2h --step 60s \\<br>\n   DS:R:GAUGE:5m:0:24000 \\<br>\n   DS:S:GAUGE:5m:0:24000 \\<br>\n   DS:T:GAUGE:5m:0:24000 \\<br>\n   RRA:AVERAGE:0.5:1m:10d \\<br>\n   RRA:AVERAGE:0.5:1h:18M \\<br>\n   RRA:AVERAGE:0.5:1d:10y</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Each minute the powerline counter values are written into the database, Format: \'R:S:T\'<br>There are three archives in this database: one for the original data (minutes)  holding the values for 10 days, one for reduced hour-values holding 18 months, and one for reduced daily-values holding 10 years.</p>\n<!-- /wp:paragraph -->\n\n<p><br /><!--StartFragment--></p>\n\n<!-- wp:paragraph -->\n<p><strong>STEP 1:</strong> Defining the database (RRD):</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>rrdtool create power.rrd \\<br>\n   --start now-2h --step 60s \\<br>\n   DS:R:GAUGE:5m:0:24000 \\<br>\n   DS:S:GAUGE:5m:0:24000 \\<br>\n   DS:T:GAUGE:5m:0:24000 \\<br>\n   RRA:AVERAGE:0.5:1m:10d \\<br>\n   RRA:AVERAGE:0.5:1h:18M \\<br>\n   RRA:AVERAGE:0.5:1d:10y</p>\n<!-- /wp:paragraph -->\n\n<p><!--EndFragment--><strong>Step 2</strong>: Script to permanently update the database:</p>\n\n<!-- wp:html -->\n<?php\n    shell_exec(\"rrdtool update power.rrd N:\".$_GET[\'data\']);\n   ?>\n<!-- /wp:html -->\n\n<!-- wp:paragraph -->\n<p><strong>Step 3</strong>: Script to visualize the data: Call this script with three optional query parameters: start, end, step.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>start: point where to begin viewing data i.e -1d -2M -4h, default 4h (4 hours)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>stop:  point where to stop viewing data (default now)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>step: resolution in seconds (default 60)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:html -->\n<?php\n$pars=<<<EOT\n DEF:R=power.rrd:R:AVERAGE \\\n CDEF:RH=R,60,* AREA:RH#f06151:R \\\n DEF:S=power.rrd:S:AVERAGE \\\n CDEF:SH=S,60,* AREA:SH#f3d24f:S:STACK \\\n DEF:T=power.rrd:T:AVERAGE \\\n CDEF:TH=T,60,*  AREA:TH#55c0d2:T:STACK\\\n CDEF:RS=RH,SH,+ CDEF:RST=RS,TH,+ \\\n GPRINT:RST:AVERAGE:\"average %2.1lf Wh\" \\\n GPRINT:RST:LAST:\"last %2.1lf Wh\"\nEOT;\n$start=isset($_GET[\'start\'])?\"-s \".$_GET[\'start\'].\" \":\" -s -4h \";\n$end=isset($_GET[\'end\'])?\" -e \".$_GET[\'end\'].\" \":\" \";\n$step=isset($_GET[\'step\'])?\" -S \".$_GET[\'step\'].\" \":\" \";\nshell_exec(\"rrdtool graph _data.png -w 1200 -h 400 \".$start.$end.$step.$pars);\n$im = imagecreatefrompng(\"_data.png\");\nheader(\'Content-Type: image/png\');\nimagepng($im);\nimagedestroy($im);\n?>\n\n<!-- /wp:html -->','Simple Smart Meter (SSM) using Rapberry Pi and ESP32','','inherit','closed','closed','','752-revision-v1','','','2021-04-04 00:07:36','2021-04-03 22:07:36','',752,'https://johann.langhofer.net/752-revision-v1/',0,'revision','',0),(760,2,'2021-04-04 00:14:48','2021-04-03 22:14:48','<p>Having some troubles to recover a \"Volkszähler\" system (server doesn\'t exists any more), I decided to build my own Smart Meter system,  user friendly and simple to maintenance.</p>\n<p><strong>The concept:</strong> S0 Impulses are counted via interrupt on a microcontroller (ESP32) and sent to a Web-server running on a Rasperry Pi. Every time, after 60 seconds, three counter values (for each phase of the power lines) are written into a Round Robin Database (RRD) file. The graph function of RRDtool is used to present this data to a human viewer via Web-Browser.</p>\n<p><img class=\"alignnone size-full wp-image-754\" src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-03-232926.jpg\" alt=\"\" width=\"1109\" height=\"458\" /></p>\n<p><strong>The hardware configuration: </strong>ESP32 -&gt;(WLAN)-&gt;RPI2</p>\n<p>Software requirements (RPI): apache2, RRDtool, php7.3, php7.3-gd</p>\n\n<!-- wp:paragraph -->\n<p>Skipping the microcontroller part (data is sent with a simple http-request http://&lt;address-of-rpi>/s0.php?data=&lt;counter1>:&lt;counter2>:&lt;counter3>)  here are the software parts of the smartmeter:</p>\n<!-- /wp:paragraph -->\n\n<p><br /><!--StartFragment--></p>\n\n<!-- wp:paragraph -->\n<p><strong>STEP 1:</strong> Defining the database (RRD):</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>rrdtool create power.rrd \\<br>\n   --start now-2h --step 60s \\<br>\n   DS:R:GAUGE:5m:0:24000 \\<br>\n   DS:S:GAUGE:5m:0:24000 \\<br>\n   DS:T:GAUGE:5m:0:24000 \\<br>\n   RRA:AVERAGE:0.5:1m:10d \\<br>\n   RRA:AVERAGE:0.5:1h:18M \\<br>\n   RRA:AVERAGE:0.5:1d:10y</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Each minute the powerline counter values are written into the database, Format: \'R:S:T\'<br>There are three archives in this database: one for the original data (minutes)  holding the values for 10 days, one for reduced hour-values holding 18 months, and one for reduced daily-values holding 10 years.</p>\n<!-- /wp:paragraph -->\n\n<p><!--EndFragment--><strong>Step 2</strong>: Script to permanently update the database:</p>\n\n<!-- wp:html -->\n<?php\n    shell_exec(\"rrdtool update power.rrd N:\".$_GET[\'data\']);\n   ?>\n<!-- /wp:html -->\n\n<!-- wp:paragraph -->\n<p><strong>Step 3</strong>: Script to visualize the data: Call this script with three optional query parameters: start, end, step.  <strong>start</strong>: point where to begin viewing data i.e -1d -2M -4h, default 4h (4 hours).  <strong>end</strong>:  point where to stop viewing data (default now). <strong>step</strong>: resolution in seconds (default 60). <em>Example: http://&lt;rpi-address>/data.php?start=-2d&amp;end=-1d</em></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:html -->\n<?php\n$pars=<<<EOT\n DEF:R=power.rrd:R:AVERAGE \\\n CDEF:RH=R,60,* AREA:RH#f06151:R \\\n DEF:S=power.rrd:S:AVERAGE \\\n CDEF:SH=S,60,* AREA:SH#f3d24f:S:STACK \\\n DEF:T=power.rrd:T:AVERAGE \\\n CDEF:TH=T,60,*  AREA:TH#55c0d2:T:STACK\\\n CDEF:RS=RH,SH,+ CDEF:RST=RS,TH,+ \\\n GPRINT:RST:AVERAGE:\"average %2.1lf Wh\" \\\n GPRINT:RST:LAST:\"last %2.1lf Wh\"\nEOT;\n$start=isset($_GET[\'start\'])?\"-s \".$_GET[\'start\'].\" \":\" -s -4h \";\n$end=isset($_GET[\'end\'])?\" -e \".$_GET[\'end\'].\" \":\" \";\n$step=isset($_GET[\'step\'])?\" -S \".$_GET[\'step\'].\" \":\" \";\nshell_exec(\"rrdtool graph _data.png -w 1200 -h 400 \".$start.$end.$step.$pars);\n$im = imagecreatefrompng(\"_data.png\");\nheader(\'Content-Type: image/png\');\nimagepng($im);\nimagedestroy($im);\n?>\n\n<!-- /wp:html -->','Simple Smart Meter (SSM) using Rapberry Pi and ESP32','','inherit','closed','closed','','752-revision-v1','','','2021-04-04 00:14:48','2021-04-03 22:14:48','',752,'https://johann.langhofer.net/752-revision-v1/',0,'revision','',0),(761,2,'2021-04-04 00:16:36','2021-04-03 22:16:36','<p>Having some troubles to recover a \"Volkszähler\" system (server doesn\'t exists any more), I decided to build my own Smart Meter system,&nbsp; user friendly and simple to maintenance.</p>\n<p><strong>The concept:</strong> S0 Impulses are counted via interrupt on a microcontroller (ESP32) and sent to a Web-server running on a Rasperry Pi. Every time, after 60 seconds, three counter values (for each phase of the power lines) are written into a&nbsp;Round Robin Database (RRD) file. The graph function of RRDtool is used to present this data to a human viewer via Web-Browser.</p>\n<p><img class=\"alignnone size-full wp-image-754\" src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-03-232926.jpg\" alt=\"\" width=\"1109\" height=\"458\"></p>\n<p><strong>The hardware configuration: </strong>ESP32 -&gt;(WLAN)-&gt;RPI2</p>\n<p>Software requirements (RPI): apache2, RRDtool, php7.3, php7.3-gd</p>\n\n<!-- wp:paragraph -->\n<p>Skipping the microcontroller part (data is sent with a simple http-request http://&lt;address-of-rpi&gt;/s0.php?data=&lt;counter1&gt;:&lt;counter2&gt;:&lt;counter3&gt;)  here are the software parts of the smartmeter:</p>\n<!-- /wp:paragraph -->\n\n<p><!--StartFragment--></p>\n\n<!-- wp:paragraph -->\n<p><strong>STEP 1:</strong> Defining the database (RRD):</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>rrdtool create power.rrd \\<br>\n   --start now-2h --step 60s \\<br>\n   DS:R:GAUGE:5m:0:24000 \\<br>\n   DS:S:GAUGE:5m:0:24000 \\<br>\n   DS:T:GAUGE:5m:0:24000 \\<br>\n   RRA:AVERAGE:0.5:1m:10d \\<br>\n   RRA:AVERAGE:0.5:1h:18M \\<br>\n   RRA:AVERAGE:0.5:1d:10y</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Each minute the powerline counter values are written into the database, Format: \'R:S:T\'<br>There are three archives in this database: one for the original data (minutes)  holding the values for 10 days, one for reduced hour-values holding 18 months, and one for reduced daily-values holding 10 years.</p>\n<!-- /wp:paragraph -->\n\n<p><!--EndFragment--><strong>Step 2</strong>: Script to permanently update the database:</p>\n\n<!-- wp:html -->\n<?php\n    shell_exec(\"rrdtool update power.rrd N:\".$_GET[\'data\']);\n   ?>\n<!-- /wp:html -->\n\n<!-- wp:paragraph -->\n<p><strong>Step 3</strong>: Script to visualize the data: Call this script with three optional query parameters: start, end, step.  <strong>start</strong>: point where to begin viewing data i.e -1d -2M -4h, default 4h (4 hours).  <strong>end</strong>:  point where to stop viewing data (default now). <strong>step</strong>: resolution in seconds (default 60). <em>Example: http://&lt;rpi-address&gt;/data.php?start=-2d&amp;end=-1d</em></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:html -->\n<?php\n$pars=<<<EOT\n DEF:R=power.rrd:R:AVERAGE \\\n CDEF:RH=R,60,* AREA:RH#f06151:R \\\n DEF:S=power.rrd:S:AVERAGE \\\n CDEF:SH=S,60,* AREA:SH#f3d24f:S:STACK \\\n DEF:T=power.rrd:T:AVERAGE \\\n CDEF:TH=T,60,*  AREA:TH#55c0d2:T:STACK\\\n CDEF:RS=RH,SH,+ CDEF:RST=RS,TH,+ \\\n GPRINT:RST:AVERAGE:\"average %2.1lf Wh\" \\\n GPRINT:RST:LAST:\"last %2.1lf Wh\"\nEOT;\n$start=isset($_GET[\'start\'])?\"-s \".$_GET[\'start\'].\" \":\" -s -4h \";\n$end=isset($_GET[\'end\'])?\" -e \".$_GET[\'end\'].\" \":\" \";\n$step=isset($_GET[\'step\'])?\" -S \".$_GET[\'step\'].\" \":\" \";\nshell_exec(\"rrdtool graph _data.png -w 1200 -h 400 \".$start.$end.$step.$pars);\n$im = imagecreatefrompng(\"_data.png\");\nheader(\'Content-Type: image/png\');\nimagepng($im);\nimagedestroy($im);\n?>\n<!-- /wp:html -->','Simple Smart Meter (SSM) using Rapberry Pi and ESP32','','inherit','closed','closed','','752-revision-v1','','','2021-04-04 00:16:36','2021-04-03 22:16:36','',752,'https://johann.langhofer.net/752-revision-v1/',0,'revision','',0),(762,2,'2021-04-04 00:23:16','2021-04-03 22:23:16','<p>Having some troubles to recover a \"Volkszähler\" system (server doesn\'t exists any more), I decided to build my own Smart Meter system,&nbsp; user friendly and simple to maintenance.</p>\n<p><strong>The concept:</strong> S0 Impulses are counted via interrupt on a microcontroller (ESP32) and sent to a Web-server running on a Rasperry Pi. Every time, after 60 seconds, three counter values (for each phase of the power lines) are written into a&nbsp;Round Robin Database (RRD) file. The graph function of RRDtool is used to present this data to a human viewer via Web-Browser.</p>\n<p><img class=\"alignnone size-full wp-image-754\" src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-03-232926.jpg\" alt=\"\" width=\"1109\" height=\"458\"></p>\n<p><strong>The hardware configuration: </strong>ESP32 -&gt;(WLAN)-&gt;RPI2</p>\n<p>Software requirements (RPI): apache2, RRDtool, php7.3, php7.3-gd</p>\n\n<!-- wp:paragraph -->\n<p>Skipping the microcontroller part (data is sent with a simple http-request http://&lt;address-of-rpi&gt;/s0.php?data=&lt;counter1&gt;:&lt;counter2&gt;:&lt;counter3&gt;)  here are the software parts of the smartmeter:</p>\n<!-- /wp:paragraph -->\n\n<p><!--StartFragment--></p>\n\n<!-- wp:paragraph -->\n<p><strong>STEP 1:</strong> Defining the database (RRD):</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>rrdtool create power.rrd \\<br>\n   --start now-2h --step 60s \\<br>\n   DS:R:GAUGE:5m:0:24000 \\<br>\n   DS:S:GAUGE:5m:0:24000 \\<br>\n   DS:T:GAUGE:5m:0:24000 \\<br>\n   RRA:AVERAGE:0.5:1m:10d \\<br>\n   RRA:AVERAGE:0.5:1h:18M \\<br>\n   RRA:AVERAGE:0.5:1d:10y</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Each minute the powerline counter values are written into the database, Format: \'R:S:T\'<br>There are three archives in this database: one for the original data (minutes)  holding the values for 10 days, one for reduced hour-values holding 18 months, and one for reduced daily-values holding 10 years.</p>\n<!-- /wp:paragraph -->\n\n<p><!--EndFragment--><strong>Step 2</strong>: Script to permanently update the database:</p>\n\n<!-- wp:html -->\n<?php\n    shell_exec(\"rrdtool update power.rrd N:\".$_GET[\'data\']);\n   ?>\n<!-- /wp:html -->\n\n<!-- wp:paragraph -->\n<p><strong>Step 3</strong>: Script to visualize the data: Call this script with three optional query parameters: start, end, step.  <strong>start</strong>: point where to begin viewing data i.e -1d -2M -4h, default 4h (4 hours).  <strong>end</strong>:  point where to stop viewing data (default now). <strong>step</strong>: resolution in seconds (default 60). <em>Example: http://&lt;rpi-address&gt;/data.php?start=-2d&amp;end=-1d</em></p>\n<!-- /wp:paragraph -->','Simple Smart Meter (SSM) using Rapberry Pi and ESP32','','inherit','closed','closed','','752-revision-v1','','','2021-04-04 00:23:16','2021-04-03 22:23:16','',752,'https://johann.langhofer.net/752-revision-v1/',0,'revision','',0),(763,2,'2021-04-04 00:23:33','2021-04-03 22:23:33','','Screenshot 2021-04-04 002239','','inherit','closed','closed','','screenshot-2021-04-04-002239','','','2021-04-04 00:23:33','2021-04-03 22:23:33','',0,'https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002239.jpg',0,'attachment','image/jpeg',0),(764,2,'2021-04-04 00:33:59','2021-04-03 22:33:59','<p>Having some troubles to recover a \"Volkszähler\" system (server doesn\'t exists any more), I decided to build my own Smart Meter system,  user friendly and simple to maintenance.</p>\n<p><strong>The concept:</strong> S0 Impulses are counted via interrupt on a microcontroller (ESP32) and sent to a Web-server running on a Rasperry Pi. Every time, after 60 seconds, three counter values (for each phase of the power lines) are written into a Round Robin Database (RRD) file. The graph function of RRDtool is used to present this data to a human viewer via Web-Browser.</p>\n<p><img class=\"alignnone size-full wp-image-754\" src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-03-232926.jpg\" alt=\"\" width=\"1109\" height=\"458\" /></p>\n<p><strong>The hardware configuration: </strong>ESP32 -&gt;(WLAN)-&gt;RPI2</p>\n<p>Software requirements (RPI): apache2, RRDtool, php7.3, php7.3-gd</p>\n\n<!-- wp:paragraph -->\n<p>Skipping the microcontroller part (data is sent with a simple http-request <em>http://&lt;address-of-rpi>/s0.php?data=&lt;counter1>:&lt;counter2>:&lt;counter3></em>)  here are the steps and the software parts of the smart meter:</p>\n<!-- /wp:paragraph -->\n\n<p><!--StartFragment--></p>\n\n<!-- wp:paragraph -->\n<p><strong>STEP 1:</strong> Defining the database (RRD):</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":767} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002715.jpg\" alt=\"\" class=\"wp-image-767\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>Each minute the power line counter values are written into the database, Format: \'R:S:T\'<br>There are three archives in this database: one for the original data (minutes)  holding the values for 10 days, one for reduced hour-values holding 18 months, and one for reduced daily-values holding 10 years.</p>\n<!-- /wp:paragraph -->\n\n<p><!--EndFragment--><strong>Step 2</strong>: Script to permanently update the database:</p>\n\n<!-- wp:html -->\n<?php\n    shell_exec(\"rrdtool update power.rrd N:\".$_GET[\'data\']);\n ?>\n\n<!-- /wp:html -->\n\n<!-- wp:image {\"id\":765} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002610.jpg\" alt=\"\" class=\"wp-image-765\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>Step 3</strong>: Script to visualize the data: Call this script with three optional query parameters: start, end, step.  <strong>start</strong>: point where to begin viewing data i.e -1d -2M -4h, default 4h (4 hours).  <strong>end</strong>:  point where to stop viewing data (default now). <strong>step</strong>: resolution in seconds (default 60). <em>Example: http://&lt;rpi-address>/data.php?start=-2d&amp;end=-1d</em></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":763} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002239.jpg\" alt=\"\" class=\"wp-image-763\"/></figure>\n<!-- /wp:image -->','Simple Smart Meter (SSM) using Rapberry Pi and ESP32','','inherit','closed','closed','','752-autosave-v1','','','2021-04-04 00:33:59','2021-04-03 22:33:59','',752,'https://johann.langhofer.net/752-autosave-v1/',0,'revision','',0),(765,2,'2021-04-04 00:26:42','2021-04-03 22:26:42','','Screenshot 2021-04-04 002610','','inherit','closed','closed','','screenshot-2021-04-04-002610','','','2021-04-04 00:26:42','2021-04-03 22:26:42','',752,'https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002610.jpg',0,'attachment','image/jpeg',0),(766,2,'2021-04-04 00:26:47','2021-04-03 22:26:47','<p>Having some troubles to recover a \"Volkszähler\" system (server doesn\'t exists any more), I decided to build my own Smart Meter system,&nbsp; user friendly and simple to maintenance.</p>\n<p><strong>The concept:</strong> S0 Impulses are counted via interrupt on a microcontroller (ESP32) and sent to a Web-server running on a Rasperry Pi. Every time, after 60 seconds, three counter values (for each phase of the power lines) are written into a&nbsp;Round Robin Database (RRD) file. The graph function of RRDtool is used to present this data to a human viewer via Web-Browser.</p>\n<p><img class=\"alignnone size-full wp-image-754\" src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-03-232926.jpg\" alt=\"\" width=\"1109\" height=\"458\"></p>\n<p><strong>The hardware configuration: </strong>ESP32 -&gt;(WLAN)-&gt;RPI2</p>\n<p>Software requirements (RPI): apache2, RRDtool, php7.3, php7.3-gd</p>\n\n<!-- wp:paragraph -->\n<p>Skipping the microcontroller part (data is sent with a simple http-request http://&lt;address-of-rpi&gt;/s0.php?data=&lt;counter1&gt;:&lt;counter2&gt;:&lt;counter3&gt;)  here are the software parts of the smartmeter:</p>\n<!-- /wp:paragraph -->\n\n<p><!--StartFragment--></p>\n\n<!-- wp:paragraph -->\n<p><strong>STEP 1:</strong> Defining the database (RRD):</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>rrdtool create power.rrd \\<br>\n   --start now-2h --step 60s \\<br>\n   DS:R:GAUGE:5m:0:24000 \\<br>\n   DS:S:GAUGE:5m:0:24000 \\<br>\n   DS:T:GAUGE:5m:0:24000 \\<br>\n   RRA:AVERAGE:0.5:1m:10d \\<br>\n   RRA:AVERAGE:0.5:1h:18M \\<br>\n   RRA:AVERAGE:0.5:1d:10y</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Each minute the powerline counter values are written into the database, Format: \'R:S:T\'<br>There are three archives in this database: one for the original data (minutes)  holding the values for 10 days, one for reduced hour-values holding 18 months, and one for reduced daily-values holding 10 years.</p>\n<!-- /wp:paragraph -->\n\n<p><!--EndFragment--><strong>Step 2</strong>: Script to permanently update the database:</p>\n\n<!-- wp:html -->\n<?php\n    shell_exec(\"rrdtool update power.rrd N:\".$_GET[\'data\']);\n ?>\n\n<!-- /wp:html -->\n\n<!-- wp:image {\"id\":765} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002610.jpg\" alt=\"\" class=\"wp-image-765\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>Step 3</strong>: Script to visualize the data: Call this script with three optional query parameters: start, end, step.  <strong>start</strong>: point where to begin viewing data i.e -1d -2M -4h, default 4h (4 hours).  <strong>end</strong>:  point where to stop viewing data (default now). <strong>step</strong>: resolution in seconds (default 60). <em>Example: http://&lt;rpi-address>/data.php?start=-2d&amp;end=-1d</em></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":763} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002239.jpg\" alt=\"\" class=\"wp-image-763\"/></figure>\n<!-- /wp:image -->','Simple Smart Meter (SSM) using Rapberry Pi and ESP32','','inherit','closed','closed','','752-revision-v1','','','2021-04-04 00:26:47','2021-04-03 22:26:47','',752,'https://johann.langhofer.net/752-revision-v1/',0,'revision','',0),(767,2,'2021-04-04 00:28:18','2021-04-03 22:28:18','','Screenshot 2021-04-04 002715','','inherit','closed','closed','','screenshot-2021-04-04-002715','','','2021-04-04 00:28:18','2021-04-03 22:28:18','',752,'https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002715.jpg',0,'attachment','image/jpeg',0),(768,2,'2021-04-04 00:28:31','2021-04-03 22:28:31','<p>Having some troubles to recover a \"Volkszähler\" system (server doesn\'t exists any more), I decided to build my own Smart Meter system,&nbsp; user friendly and simple to maintenance.</p>\n<p><strong>The concept:</strong> S0 Impulses are counted via interrupt on a microcontroller (ESP32) and sent to a Web-server running on a Rasperry Pi. Every time, after 60 seconds, three counter values (for each phase of the power lines) are written into a&nbsp;Round Robin Database (RRD) file. The graph function of RRDtool is used to present this data to a human viewer via Web-Browser.</p>\n<p><img class=\"alignnone size-full wp-image-754\" src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-03-232926.jpg\" alt=\"\" width=\"1109\" height=\"458\"></p>\n<p><strong>The hardware configuration: </strong>ESP32 -&gt;(WLAN)-&gt;RPI2</p>\n<p>Software requirements (RPI): apache2, RRDtool, php7.3, php7.3-gd</p>\n\n<!-- wp:paragraph -->\n<p>Skipping the microcontroller part (data is sent with a simple http-request http://&lt;address-of-rpi&gt;/s0.php?data=&lt;counter1&gt;:&lt;counter2&gt;:&lt;counter3&gt;)  here are the software parts of the smartmeter:</p>\n<!-- /wp:paragraph -->\n\n<p><!--StartFragment--></p>\n\n<!-- wp:paragraph -->\n<p><strong>STEP 1:</strong> Defining the database (RRD):</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":767} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002715.jpg\" alt=\"\" class=\"wp-image-767\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>Each minute the powerline counter values are written into the database, Format: \'R:S:T\'<br>There are three archives in this database: one for the original data (minutes)  holding the values for 10 days, one for reduced hour-values holding 18 months, and one for reduced daily-values holding 10 years.</p>\n<!-- /wp:paragraph -->\n\n<p><!--EndFragment--><strong>Step 2</strong>: Script to permanently update the database:</p>\n\n<!-- wp:html -->\n<?php\n    shell_exec(\"rrdtool update power.rrd N:\".$_GET[\'data\']);\n ?>\n\n<!-- /wp:html -->\n\n<!-- wp:image {\"id\":765} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002610.jpg\" alt=\"\" class=\"wp-image-765\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>Step 3</strong>: Script to visualize the data: Call this script with three optional query parameters: start, end, step.  <strong>start</strong>: point where to begin viewing data i.e -1d -2M -4h, default 4h (4 hours).  <strong>end</strong>:  point where to stop viewing data (default now). <strong>step</strong>: resolution in seconds (default 60). <em>Example: http://&lt;rpi-address>/data.php?start=-2d&amp;end=-1d</em></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":763} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002239.jpg\" alt=\"\" class=\"wp-image-763\"/></figure>\n<!-- /wp:image -->','Simple Smart Meter (SSM) using Rapberry Pi and ESP32','','inherit','closed','closed','','752-revision-v1','','','2021-04-04 00:28:31','2021-04-03 22:28:31','',752,'https://johann.langhofer.net/752-revision-v1/',0,'revision','',0),(769,2,'2021-04-04 00:30:19','2021-04-03 22:30:19','<p>Having some troubles to recover a \"Volkszähler\" system (server doesn\'t exists any more), I decided to build my own Smart Meter system,&nbsp; user friendly and simple to maintenance.</p>\n<p><strong>The concept:</strong> S0 Impulses are counted via interrupt on a microcontroller (ESP32) and sent to a Web-server running on a Rasperry Pi. Every time, after 60 seconds, three counter values (for each phase of the power lines) are written into a&nbsp;Round Robin Database (RRD) file. The graph function of RRDtool is used to present this data to a human viewer via Web-Browser.</p>\n<p><img class=\"alignnone size-full wp-image-754\" src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-03-232926.jpg\" alt=\"\" width=\"1109\" height=\"458\"></p>\n<p><strong>The hardware configuration: </strong>ESP32 -&gt;(WLAN)-&gt;RPI2</p>\n<p>Software requirements (RPI): apache2, RRDtool, php7.3, php7.3-gd</p>\n\n<!-- wp:paragraph -->\n<p>Skipping the microcontroller part (data is sent with a simple http-request http://&lt;address-of-rpi>/s0.php?data=&lt;counter1>:&lt;counter2>:&lt;counter3>)  here are the steps and the software parts of the smart meter:</p>\n<!-- /wp:paragraph -->\n\n<p><!--StartFragment--></p>\n\n<!-- wp:paragraph -->\n<p><strong>STEP 1:</strong> Defining the database (RRD):</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":767} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002715.jpg\" alt=\"\" class=\"wp-image-767\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>Each minute the power line counter values are written into the database, Format: \'R:S:T\'<br>There are three archives in this database: one for the original data (minutes)  holding the values for 10 days, one for reduced hour-values holding 18 months, and one for reduced daily-values holding 10 years.</p>\n<!-- /wp:paragraph -->\n\n<p><!--EndFragment--><strong>Step 2</strong>: Script to permanently update the database:</p>\n\n<!-- wp:html -->\n<?php\n    shell_exec(\"rrdtool update power.rrd N:\".$_GET[\'data\']);\n ?>\n\n<!-- /wp:html -->\n\n<!-- wp:image {\"id\":765} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002610.jpg\" alt=\"\" class=\"wp-image-765\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>Step 3</strong>: Script to visualize the data: Call this script with three optional query parameters: start, end, step.  <strong>start</strong>: point where to begin viewing data i.e -1d -2M -4h, default 4h (4 hours).  <strong>end</strong>:  point where to stop viewing data (default now). <strong>step</strong>: resolution in seconds (default 60). <em>Example: http://&lt;rpi-address>/data.php?start=-2d&amp;end=-1d</em></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":763} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002239.jpg\" alt=\"\" class=\"wp-image-763\"/></figure>\n<!-- /wp:image -->','Simple Smart Meter (SSM) using Rapberry Pi and ESP32','','inherit','closed','closed','','752-revision-v1','','','2021-04-04 00:30:19','2021-04-03 22:30:19','',752,'https://johann.langhofer.net/752-revision-v1/',0,'revision','',0),(770,2,'2021-04-04 00:31:40','2021-04-03 22:31:40','<p>Having some troubles to recover a \"Volkszähler\" system (server doesn\'t exists any more), I decided to build my own Smart Meter system,&nbsp; user friendly and simple to maintenance.</p>\n<p><strong>The concept:</strong> S0 Impulses are counted via interrupt on a microcontroller (ESP32) and sent to a Web-server running on a Rasperry Pi. Every time, after 60 seconds, three counter values (for each phase of the power lines) are written into a&nbsp;Round Robin Database (RRD) file. The graph function of RRDtool is used to present this data to a human viewer via Web-Browser.</p>\n<p><img class=\"alignnone size-full wp-image-754\" src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-03-232926.jpg\" alt=\"\" width=\"1109\" height=\"458\"></p>\n<p><strong>The hardware configuration: </strong>ESP32 -&gt;(WLAN)-&gt;RPI2</p>\n<p>Software requirements (RPI): apache2, RRDtool, php7.3, php7.3-gd</p>\n\n<!-- wp:paragraph -->\n<p>Skipping the microcontroller part (data is sent with a simple http-request <em>http://&lt;address-of-rpi>/s0.php?data=&lt;counter1>:&lt;counter2>:&lt;counter3></em>)  here are the steps and the software parts of the smart meter:</p>\n<!-- /wp:paragraph -->\n\n<p><!--StartFragment--></p>\n\n<!-- wp:paragraph -->\n<p><strong>STEP 1:</strong> Defining the database (RRD):</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":767} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002715.jpg\" alt=\"\" class=\"wp-image-767\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>Each minute the power line counter values are written into the database, Format: \'R:S:T\'<br>There are three archives in this database: one for the original data (minutes)  holding the values for 10 days, one for reduced hour-values holding 18 months, and one for reduced daily-values holding 10 years.</p>\n<!-- /wp:paragraph -->\n\n<p><!--EndFragment--><strong>Step 2</strong>: Script to permanently update the database:</p>\n\n<!-- wp:html -->\n<?php\n    shell_exec(\"rrdtool update power.rrd N:\".$_GET[\'data\']);\n ?>\n\n<!-- /wp:html -->\n\n<!-- wp:image {\"id\":765} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002610.jpg\" alt=\"\" class=\"wp-image-765\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>Step 3</strong>: Script to visualize the data: Call this script with three optional query parameters: start, end, step.  <strong>start</strong>: point where to begin viewing data i.e -1d -2M -4h, default 4h (4 hours).  <strong>end</strong>:  point where to stop viewing data (default now). <strong>step</strong>: resolution in seconds (default 60). <em>Example: http://&lt;rpi-address>/data.php?start=-2d&amp;end=-1d</em></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":763} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002239.jpg\" alt=\"\" class=\"wp-image-763\"/></figure>\n<!-- /wp:image -->','Simple Smart Meter (SSM) using Rapberry Pi and ESP32','','inherit','closed','closed','','752-revision-v1','','','2021-04-04 00:31:40','2021-04-03 22:31:40','',752,'https://johann.langhofer.net/752-revision-v1/',0,'revision','',0),(771,2,'2021-04-04 00:34:03','2021-04-03 22:34:03','<p>Having some troubles to recover a \"Volkszähler\" system (server doesn\'t exists any more), I decided to build my own Smart Meter system,  user friendly and simple to maintenance.</p>\n<p><strong>The concept:</strong> S0 Impulses are counted via interrupt on a microcontroller (ESP32) and sent to a Web-server running on a Rasperry Pi. Every time, after 60 seconds, three counter values (for each phase of the power lines) are written into a Round Robin Database (RRD) file. The graph function of RRDtool is used to present this data to a human viewer via Web-Browser.</p>\n<p><img class=\"alignnone size-full wp-image-754\" src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-03-232926.jpg\" alt=\"\" width=\"1109\" height=\"458\" /></p>\n<p><strong>The hardware configuration: </strong>ESP32 -&gt;(WLAN)-&gt;RPI2</p>\n<p><strong>Software requirements (RPI):</strong> apache2, RRDtool, php7.3, php7.3-gd</p>\n\n<!-- wp:paragraph -->\n<p>Skipping the microcontroller part (data is sent with a simple http-request <em>http://&lt;address-of-rpi>/s0.php?data=&lt;counter1>:&lt;counter2>:&lt;counter3></em>)  here are the steps and the software parts of the smart meter:</p>\n<!-- /wp:paragraph -->\n\n<p><!--StartFragment--></p>\n\n<!-- wp:paragraph -->\n<p><strong>STEP 1:</strong> Defining the database (RRD):</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":767} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002715.jpg\" alt=\"\" class=\"wp-image-767\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>Each minute the power line counter values are written into the database, Format: \'R:S:T\'<br>There are three archives in this database: one for the original data (minutes)  holding the values for 10 days, one for reduced hour-values holding 18 months, and one for reduced daily-values holding 10 years.</p>\n<!-- /wp:paragraph -->\n\n<p><!--EndFragment--><strong>Step 2</strong>: Script to permanently update the database:</p>\n\n<!-- wp:html -->\n<?php\n    shell_exec(\"rrdtool update power.rrd N:\".$_GET[\'data\']);\n ?>\n\n<!-- /wp:html -->\n\n<!-- wp:image {\"id\":765} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002610.jpg\" alt=\"\" class=\"wp-image-765\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>Step 3</strong>: Script to visualize the data: Call this script with three optional query parameters: start, end, step.  <strong>start</strong>: point where to begin viewing data i.e -1d -2M -4h, default 4h (4 hours).  <strong>end</strong>:  point where to stop viewing data (default now). <strong>step</strong>: resolution in seconds (default 60). <em>Example: http://&lt;rpi-address>/data.php?start=-2d&amp;end=-1d</em></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":763} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002239.jpg\" alt=\"\" class=\"wp-image-763\"/></figure>\n<!-- /wp:image -->','Simple Smart Meter (SSM) using Rapberry Pi and ESP32','','inherit','closed','closed','','752-revision-v1','','','2021-04-04 00:34:03','2021-04-03 22:34:03','',752,'https://johann.langhofer.net/752-revision-v1/',0,'revision','',0),(772,2,'2021-04-04 00:34:43','2021-04-03 22:34:43','<p>Having some troubles to recover a \"Volkszähler\" system (server doesn\'t exists any more), I decided to build my own Smart Meter system,  user friendly, small footprint and simple to maintenance.</p>\n<p><strong>The concept:</strong> S0 Impulses are counted via interrupt on a microcontroller (ESP32) and sent to a Web-server running on a Rasperry Pi. Every time, after 60 seconds, three counter values (for each phase of the power lines) are written into a Round Robin Database (RRD) file. The graph function of RRDtool is used to present this data to a human viewer via Web-Browser.</p>\n<p><img class=\"alignnone size-full wp-image-754\" src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-03-232926.jpg\" alt=\"\" width=\"1109\" height=\"458\" /></p>\n<p><strong>The hardware configuration: </strong>ESP32 -&gt;(WLAN)-&gt;RPI2</p>\n<p><strong>Software requirements (RPI):</strong> apache2, RRDtool, php7.3, php7.3-gd</p>\n\n<!-- wp:paragraph -->\n<p>Skipping the microcontroller part (data is sent with a simple http-request <em>http://&lt;address-of-rpi>/s0.php?data=&lt;counter1>:&lt;counter2>:&lt;counter3></em>)  here are the steps and the software parts of the smart meter:</p>\n<!-- /wp:paragraph -->\n\n<p><!--StartFragment--></p>\n\n<!-- wp:paragraph -->\n<p><strong>STEP 1:</strong> Defining the database (RRD):</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":767} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002715.jpg\" alt=\"\" class=\"wp-image-767\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>Each minute the power line counter values are written into the database, Format: \'R:S:T\'<br>There are three archives in this database: one for the original data (minutes)  holding the values for 10 days, one for reduced hour-values holding 18 months, and one for reduced daily-values holding 10 years.</p>\n<!-- /wp:paragraph -->\n\n<p><!--EndFragment--><strong>Step 2</strong>: Script to permanently update the database:</p>\n\n<!-- wp:html -->\n<?php\n    shell_exec(\"rrdtool update power.rrd N:\".$_GET[\'data\']);\n ?>\n\n<!-- /wp:html -->\n\n<!-- wp:image {\"id\":765} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002610.jpg\" alt=\"\" class=\"wp-image-765\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>Step 3</strong>: Script to visualize the data: Call this script with three optional query parameters: start, end, step.  <strong>start</strong>: point where to begin viewing data i.e -1d -2M -4h, default 4h (4 hours).  <strong>end</strong>:  point where to stop viewing data (default now). <strong>step</strong>: resolution in seconds (default 60). <em>Example: http://&lt;rpi-address>/data.php?start=-2d&amp;end=-1d</em></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":763} -->\n<figure class=\"wp-block-image\"><img src=\"https://johann.langhofer.net/wp-content/uploads/2021/04/Screenshot-2021-04-04-002239.jpg\" alt=\"\" class=\"wp-image-763\"/></figure>\n<!-- /wp:image -->','Simple Smart Meter (SSM) using Rapberry Pi and ESP32','','inherit','closed','closed','','752-revision-v1','','','2021-04-04 00:34:43','2021-04-03 22:34:43','',752,'https://johann.langhofer.net/752-revision-v1/',0,'revision','',0),(773,2,'2022-02-16 21:55:01','2022-02-16 20:55:01','{\"version\": 2, \"isGlobalStylesUserThemeJSON\": true }','Custom Styles','','publish','closed','closed','','wp-global-styles-azeria','','','2022-02-16 21:55:01','2022-02-16 20:55:01','',0,'https://johann.langhofer.net/wp-global-styles-azeria/',0,'wp_global_styles','',0),(775,2,'2022-02-16 21:57:02','2022-02-16 20:57:02','<!-- wp:heading -->\n<h2 id=\"tablet\">WACOM Intuos Pro Tablet</h2>\n<!-- /wp:heading -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=\'10\']\n<!-- /wp:shortcode -->\n\n<!-- wp:paragraph -->\n<p>Useful software:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Krita</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=9]\n<!-- /wp:shortcode -->\n\n<!-- wp:quote -->\n<blockquote class=\"wp-block-quote\"><p>ArtRage 4<br>Sketchbook pro<br>Inkscape<br>Lightroom</p></blockquote>\n<!-- /wp:quote -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=\'2\' position=\'center\']\n<!-- /wp:shortcode -->','Art','','inherit','closed','closed','','112-revision-v1','','','2022-02-16 21:57:02','2022-02-16 20:57:02','',112,'https://johann.langhofer.net/?p=775',0,'revision','',0),(776,2,'2022-02-16 21:58:16','2022-02-16 20:58:16','<!-- wp:heading -->\n<h2 id=\"tablet\">WACOM Intuos Pro Tablet</h2>\n<!-- /wp:heading -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=10  position=\'center\']\n<!-- /wp:shortcode -->\n\n<!-- wp:paragraph -->\n<p>Useful software:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Krita</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=9]\n<!-- /wp:shortcode -->\n\n<!-- wp:quote -->\n<blockquote class=\"wp-block-quote\"><p>ArtRage 4<br>Sketchbook pro<br>Inkscape<br>Lightroom</p></blockquote>\n<!-- /wp:quote -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=\'2\' position=\'center\']\n<!-- /wp:shortcode -->','Art','','inherit','closed','closed','','112-revision-v1','','','2022-02-16 21:58:16','2022-02-16 20:58:16','',112,'https://johann.langhofer.net/?p=776',0,'revision','',0),(777,2,'2022-02-16 22:00:05','2022-02-16 21:00:05','[supsystic-gallery id=\"10\"]','Gallery Preview','','inherit','closed','closed','','677-revision-v1','','','2022-02-16 22:00:05','2022-02-16 21:00:05','',677,'https://johann.langhofer.net/?p=777',0,'revision','',0),(778,2,'2022-02-16 22:01:01','2022-02-16 21:01:01','[supsystic-gallery id=\"4\"]','Gallery Preview','','inherit','closed','closed','','677-revision-v1','','','2022-02-16 22:01:01','2022-02-16 21:01:01','',677,'https://johann.langhofer.net/?p=778',0,'revision','',0),(779,2,'2022-02-16 22:01:14','2022-02-16 21:01:14','[supsystic-gallery id=\"10\"]','Gallery Preview','','inherit','closed','closed','','677-revision-v1','','','2022-02-16 22:01:14','2022-02-16 21:01:14','',677,'https://johann.langhofer.net/?p=779',0,'revision','',0),(780,2,'2022-02-16 22:02:59','2022-02-16 21:02:59','<!-- wp:heading -->\n<h2 id=\"tablet\">WACOM Intuos Pro Tablet</h2>\n<!-- /wp:heading -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=10 ]\n<!-- /wp:shortcode -->\n\n<!-- wp:paragraph -->\n<p>Useful software:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Krita</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=9]\n<!-- /wp:shortcode -->\n\n<!-- wp:quote -->\n<blockquote class=\"wp-block-quote\"><p>ArtRage 4<br>Sketchbook pro<br>Inkscape<br>Lightroom</p></blockquote>\n<!-- /wp:quote -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=\'2\' position=\'center\']\n<!-- /wp:shortcode -->','Art','','inherit','closed','closed','','112-revision-v1','','','2022-02-16 22:02:59','2022-02-16 21:02:59','',112,'https://johann.langhofer.net/?p=780',0,'revision','',0),(782,2,'2022-02-16 22:04:43','2022-02-16 21:04:43','<!-- wp:heading -->\n<h2 id=\"tablet\">WACOM Intuos Pro Tablet</h2>\n<!-- /wp:heading -->\n\n<!-- wp:shortcode -->\nblabla\n[supsystic-gallery id=10 ]\n<!-- /wp:shortcode -->\n\n<!-- wp:paragraph -->\n<p>Useful software:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Krita</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=9]\n<!-- /wp:shortcode -->\n\n<!-- wp:quote -->\n<blockquote class=\"wp-block-quote\"><p>ArtRage 4<br>Sketchbook pro<br>Inkscape<br>Lightroom</p></blockquote>\n<!-- /wp:quote -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=\'2\' position=\'center\']\n<!-- /wp:shortcode -->','Art','','inherit','closed','closed','','112-revision-v1','','','2022-02-16 22:04:43','2022-02-16 21:04:43','',112,'https://johann.langhofer.net/?p=782',0,'revision','',0),(783,2,'2022-02-16 22:05:06','2022-02-16 21:05:06','<!-- wp:heading -->\n<h2 id=\"tablet\">WACOM Intuos Pro Tablet</h2>\n<!-- /wp:heading -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=9 ]\n<!-- /wp:shortcode -->\n\n<!-- wp:paragraph -->\n<p>Useful software:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Krita</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=9]\n<!-- /wp:shortcode -->\n\n<!-- wp:quote -->\n<blockquote class=\"wp-block-quote\"><p>ArtRage 4<br>Sketchbook pro<br>Inkscape<br>Lightroom</p></blockquote>\n<!-- /wp:quote -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=\'2\' position=\'center\']\n<!-- /wp:shortcode -->','Art','','inherit','closed','closed','','112-revision-v1','','','2022-02-16 22:05:06','2022-02-16 21:05:06','',112,'https://johann.langhofer.net/?p=783',0,'revision','',0),(784,2,'2022-02-16 22:05:24','2022-02-16 21:05:24','<!-- wp:heading -->\n<h2 id=\"tablet\">WACOM Intuos Pro Tablet</h2>\n<!-- /wp:heading -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=8 ]\n<!-- /wp:shortcode -->\n\n<!-- wp:paragraph -->\n<p>Useful software:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Krita</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=9]\n<!-- /wp:shortcode -->\n\n<!-- wp:quote -->\n<blockquote class=\"wp-block-quote\"><p>ArtRage 4<br>Sketchbook pro<br>Inkscape<br>Lightroom</p></blockquote>\n<!-- /wp:quote -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=\'2\' position=\'center\']\n<!-- /wp:shortcode -->','Art','','inherit','closed','closed','','112-revision-v1','','','2022-02-16 22:05:24','2022-02-16 21:05:24','',112,'https://johann.langhofer.net/?p=784',0,'revision','',0),(785,2,'2022-02-16 22:05:41','2022-02-16 21:05:41','<!-- wp:heading -->\n<h2 id=\"tablet\">WACOM Intuos Pro Tablet</h2>\n<!-- /wp:heading -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=10 ]\n<!-- /wp:shortcode -->\n\n<!-- wp:paragraph -->\n<p>Useful software:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Krita</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=9]\n<!-- /wp:shortcode -->\n\n<!-- wp:quote -->\n<blockquote class=\"wp-block-quote\"><p>ArtRage 4<br>Sketchbook pro<br>Inkscape<br>Lightroom</p></blockquote>\n<!-- /wp:quote -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=\'2\' position=\'center\']\n<!-- /wp:shortcode -->','Art','','inherit','closed','closed','','112-revision-v1','','','2022-02-16 22:05:41','2022-02-16 21:05:41','',112,'https://johann.langhofer.net/?p=785',0,'revision','',0),(786,2,'2022-02-16 22:08:16','2022-02-16 21:08:16','<!-- wp:heading -->\n<h2 id=\"tablet\">WACOM Intuos Pro Tablet</h2>\n<!-- /wp:heading -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=11 ]\n<!-- /wp:shortcode -->\n\n<!-- wp:paragraph -->\n<p>Useful software:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Krita</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=9]\n<!-- /wp:shortcode -->\n\n<!-- wp:quote -->\n<blockquote class=\"wp-block-quote\"><p>ArtRage 4<br>Sketchbook pro<br>Inkscape<br>Lightroom</p></blockquote>\n<!-- /wp:quote -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=\'2\' position=\'center\']\n<!-- /wp:shortcode -->','Art','','inherit','closed','closed','','112-revision-v1','','','2022-02-16 22:08:16','2022-02-16 21:08:16','',112,'https://johann.langhofer.net/?p=786',0,'revision','',0),(787,2,'2022-02-16 22:12:51','2022-02-16 21:12:51','[supsystic-gallery id=\"1\"]','Gallery Preview','','inherit','closed','closed','','677-revision-v1','','','2022-02-16 22:12:51','2022-02-16 21:12:51','',677,'https://johann.langhofer.net/?p=787',0,'revision','',0),(788,2,'2022-02-16 22:18:55','2022-02-16 21:18:55','<!-- wp:heading -->\n<h2 id=\"tablet\">WACOM Intuos Pro Tablet</h2>\n<!-- /wp:heading -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=10 ]\n<!-- /wp:shortcode -->\n\n<!-- wp:paragraph -->\n<p>Useful software:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Krita</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=9]\n<!-- /wp:shortcode -->\n\n<!-- wp:quote -->\n<blockquote class=\"wp-block-quote\"><p>ArtRage 4<br>Sketchbook pro<br>Inkscape<br>Lightroom</p></blockquote>\n<!-- /wp:quote -->\n\n<!-- wp:shortcode -->\n[supsystic-gallery id=\'2\' position=\'center\']\n<!-- /wp:shortcode -->','Art','','inherit','closed','closed','','112-revision-v1','','','2022-02-16 22:18:55','2022-02-16 21:18:55','',112,'https://johann.langhofer.net/?p=788',0,'revision','',0);

--
-- Table structure for table `wp_term_relationships`
--

CREATE TABLE `wp_term_relationships` (
  `object_id` bigint unsigned NOT NULL DEFAULT '0',
  `term_taxonomy_id` bigint unsigned NOT NULL DEFAULT '0',
  `term_order` int NOT NULL DEFAULT '0',
  PRIMARY KEY (`object_id`,`term_taxonomy_id`),
  KEY `term_taxonomy_id` (`term_taxonomy_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `wp_term_relationships`
--

INSERT INTO `wp_term_relationships` VALUES (43,3,0),(47,3,0),(50,3,0),(53,3,0),(59,4,0),(61,70,0),(62,3,0),(66,2,0),(79,3,0),(86,5,0),(87,5,0),(93,5,0),(95,5,0),(96,5,0),(97,5,0),(98,5,0),(100,5,0),(101,5,0),(102,2,0),(102,6,0),(103,5,0),(104,5,0),(105,5,0),(106,5,0),(107,5,0),(108,5,0),(109,5,0),(110,2,0),(110,5,0),(113,3,0),(115,7,0),(116,7,0),(117,7,0),(118,7,0),(119,7,0),(120,7,0),(121,7,0),(122,7,0),(123,2,0),(123,7,0),(124,7,0),(125,7,0),(131,7,0),(132,7,0),(133,7,0),(134,7,0),(135,7,0),(136,7,0),(145,2,0),(149,3,0),(156,2,0),(158,3,0),(160,2,0),(230,1,0),(230,13,0),(230,17,0),(230,21,0),(230,22,0),(230,23,0),(234,1,0),(234,11,0),(234,12,0),(234,13,0),(234,16,0),(234,20,0),(234,23,0),(234,24,0),(259,1,0),(259,8,0),(259,9,0),(259,11,0),(259,12,0),(259,13,0),(259,16,0),(259,17,0),(259,18,0),(259,19,0),(259,24,0),(284,1,0),(284,16,0),(284,23,0),(284,25,0),(284,26,0),(284,27,0),(284,28,0),(284,29,0),(284,30,0),(284,31,0),(311,2,0),(326,1,0),(326,32,0),(326,35,0),(326,36,0),(326,37,0),(326,38,0),(326,39,0),(326,40,0),(342,1,0),(342,41,0),(348,1,0),(348,42,0),(353,1,0),(353,43,0),(353,44,0),(353,45,0),(479,1,0),(500,1,0),(500,46,0),(500,47,0),(500,48,0),(500,49,0),(500,50,0),(500,51,0),(500,52,0),(500,53,0),(508,1,0),(508,54,0),(508,55,0),(508,56,0),(508,57,0),(532,1,0),(532,58,0),(532,59,0),(532,60,0),(552,1,0),(552,61,0),(581,2,0),(613,1,0),(613,62,0),(613,63,0),(613,64,0),(613,65,0),(613,67,0),(613,68,0),(655,1,0),(655,62,0),(655,71,0),(655,72,0),(655,73,0),(655,74,0),(655,75,0),(677,1,0),(715,1,0),(737,1,0),(737,76,0),(737,77,0),(737,78,0),(737,79,0),(752,1,0),(752,16,0),(752,72,0),(752,80,0),(752,81,0),(752,82,0),(752,83,0),(773,84,0);

--
-- Table structure for table `wp_term_taxonomy`
--

CREATE TABLE `wp_term_taxonomy` (
  `term_taxonomy_id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `term_id` bigint unsigned NOT NULL DEFAULT '0',
  `taxonomy` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `description` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `parent` bigint unsigned NOT NULL DEFAULT '0',
  `count` bigint NOT NULL DEFAULT '0',
  PRIMARY KEY (`term_taxonomy_id`),
  UNIQUE KEY `term_id_taxonomy` (`term_id`,`taxonomy`),
  KEY `taxonomy` (`taxonomy`)
) ENGINE=InnoDB AUTO_INCREMENT=85 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `wp_term_taxonomy`
--

INSERT INTO `wp_term_taxonomy` VALUES (1,1,'category','',0,18),(2,2,'ml-slider','',0,9),(3,3,'nav_menu','',0,9),(4,4,'media_category','',0,1),(5,5,'media_category','',0,17),(6,6,'media_category','',0,1),(7,7,'media_category','',0,17),(8,8,'post_tag','',0,1),(9,9,'post_tag','',0,1),(10,10,'post_tag','',0,0),(11,11,'post_tag','',0,2),(12,12,'post_tag','',0,2),(13,13,'post_tag','',0,3),(14,14,'post_tag','',0,0),(15,15,'post_tag','',0,0),(16,16,'post_tag','',0,4),(17,17,'post_tag','',0,2),(18,18,'post_tag','',0,1),(19,19,'post_tag','',0,1),(20,20,'post_tag','',0,1),(21,21,'post_tag','',0,1),(22,22,'post_tag','',0,1),(23,23,'post_tag','',0,3),(24,24,'post_tag','',0,2),(25,25,'post_tag','',0,1),(26,26,'post_tag','',0,1),(27,27,'post_tag','',0,1),(28,28,'post_tag','',0,1),(29,29,'post_tag','',0,1),(30,30,'post_tag','',0,1),(31,31,'post_tag','',0,1),(32,32,'post_tag','',0,1),(33,33,'post_tag','',0,0),(34,34,'post_tag','',0,0),(35,35,'post_tag','',0,1),(36,36,'post_tag','',0,1),(37,37,'post_tag','',0,1),(38,38,'post_tag','',0,1),(39,39,'post_tag','',0,1),(40,40,'post_tag','',0,1),(41,41,'post_tag','',0,1),(42,42,'post_tag','',0,1),(43,43,'post_tag','',0,1),(44,44,'post_tag','',0,1),(45,45,'post_tag','',0,1),(46,46,'post_tag','',0,1),(47,47,'post_tag','',0,1),(48,48,'post_tag','',0,1),(49,49,'post_tag','',0,1),(50,50,'post_tag','',0,1),(51,51,'post_tag','',0,1),(52,52,'post_tag','',0,1),(53,53,'post_tag','',0,1),(54,54,'post_tag','',0,1),(55,55,'post_tag','',0,1),(56,56,'post_tag','',0,1),(57,57,'post_tag','',0,1),(58,58,'post_tag','',0,1),(59,59,'post_tag','',0,1),(60,60,'post_tag','',0,1),(61,61,'post_tag','',0,1),(62,62,'post_tag','',0,2),(63,63,'post_tag','',0,1),(64,64,'post_tag','',0,1),(65,65,'post_tag','',0,1),(66,66,'post_tag','',0,0),(67,67,'post_tag','',0,1),(68,68,'post_tag','',0,1),(69,69,'ml-slider','',0,0),(70,70,'post_tag','',0,1),(71,71,'post_tag','',0,1),(72,72,'post_tag','',0,2),(73,73,'post_tag','',0,1),(74,74,'post_tag','',0,1),(75,75,'post_tag','',0,1),(76,76,'post_tag','',0,1),(77,77,'post_tag','',0,1),(78,78,'post_tag','',0,1),(79,79,'post_tag','',0,1),(80,80,'post_tag','',0,1),(81,81,'post_tag','',0,1),(82,82,'post_tag','',0,1),(83,83,'post_tag','',0,1),(84,84,'wp_theme','',0,1);

--
-- Table structure for table `wp_termmeta`
--

CREATE TABLE `wp_termmeta` (
  `meta_id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `term_id` bigint unsigned NOT NULL DEFAULT '0',
  `meta_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `meta_value` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
  PRIMARY KEY (`meta_id`),
  KEY `term_id` (`term_id`),
  KEY `meta_key` (`meta_key`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `wp_termmeta`
--


--
-- Table structure for table `wp_terms`
--

CREATE TABLE `wp_terms` (
  `term_id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `slug` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `term_group` bigint NOT NULL DEFAULT '0',
  PRIMARY KEY (`term_id`),
  KEY `slug` (`slug`(191)),
  KEY `name` (`name`(191))
) ENGINE=InnoDB AUTO_INCREMENT=85 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `wp_terms`
--

INSERT INTO `wp_terms` VALUES (1,'Allgemein','allgemein',0),(2,'20','20',0),(3,'Menu 1','menu-1',0),(4,'assets','assets',0),(5,'3dprinting','3dprinting',0),(6,'3DGraphics','3dgraphics',0),(7,'Art','art',0),(8,'DVB-C','dvb-c',0),(9,'DVB-T','dvb-t',0),(10,'Widows','widows',0),(11,'Android','android',0),(12,'VLC','vlc',0),(13,'Tvhclient','tvhclient',0),(14,'Terratec','terratec',0),(15,'CYNERGY HTC','cynergy-htc',0),(16,'Rpi2','rpi2',0),(17,'Raspbian','raspbian',0),(18,'TV-Stick','tv-stick',0),(19,'Terratec Cynergy HTC','terratec-cynergy-htc',0),(20,'playlist','playlist',0),(21,'win32DiskImager','win32diskimager',0),(22,'jessie','jessie',0),(23,'tvheadend','tvheadend',0),(24,'Windows','windows',0),(25,'fstab','fstab',0),(26,'boot','boot',0),(27,'raspi-config','raspi-config',0),(28,'automount','automount',0),(29,'dvb','dvb',0),(30,'NAS','nas',0),(31,'recording','recording',0),(32,'K40','k40',0),(33,'smoothieboard m2NANO','smoothieboard-m2nano',0),(34,'Lasercuter','lasercuter',0),(35,'CO2','co2',0),(36,'Laserweb3','laserweb3',0),(37,'Inkscape','inkscape',0),(38,'Lasercutter','lasercutter',0),(39,'smoothieboard','smoothieboard',0),(40,'m2NANO','m2nano',0),(41,'Z-Table','z-table',0),(42,'air-assist','air-assist',0),(43,'LCD','lcd',0),(44,'Smart Controller','smart-controller',0),(45,'Reprap','reprap',0),(46,'M.C.ESCHER','m-c-escher',0),(47,'HTML5','html5',0),(48,'MIRROR-CUBES','mirror-cubes',0),(49,'magic mirror','magic-mirror',0),(50,'game','game',0),(51,'typescript','typescript',0),(52,'javascript','javascript',0),(53,'babylon.js','babylon-js',0),(54,'candles','candles',0),(55,'realtime simulation','realtime-simulation',0),(56,'2D','2d',0),(57,'pixi.js','pixi-js',0),(58,'FilterForge','filterforge',0),(59,'Blender','blender',0),(60,'Anvil','anvil',0),(61,'PBRComposer','pbrcomposer',0),(62,'Arduino','arduino',0),(63,'NANO','nano',0),(64,'Levitation','levitation',0),(65,'Coil','coil',0),(66,'Oscillating','oscillating',0),(67,'Hall-sensor','hall-sensor',0),(68,'magnetic','magnetic',0),(69,'619','619',0),(70,'magnetic levitation','magnetic-levitation',0),(71,'ODROID-GO','odroid-go',0),(72,'ESP32','esp32',0),(73,'ILI934','ili934',0),(74,'wrover','wrover',0),(75,'TFT','tft',0),(76,'WACOM','wacom',0),(77,'KRITA','krita',0),(78,'TABLET','tablet',0),(79,'Intuos Pro','intuos-pro',0),(80,'Smart Meter','smart-meter',0),(81,'Volkszähler','volkszahler',0),(82,'Raspbarry Pi','raspbarry-pi',0),(83,'RRDTOOL','rrdtool',0),(84,'azeria','azeria',0);

--
-- Table structure for table `wp_usermeta`
--

CREATE TABLE `wp_usermeta` (
  `umeta_id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `user_id` bigint unsigned NOT NULL DEFAULT '0',
  `meta_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `meta_value` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
  PRIMARY KEY (`umeta_id`),
  KEY `user_id` (`user_id`),
  KEY `meta_key` (`meta_key`(191))
) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `wp_usermeta`
--

INSERT INTO `wp_usermeta` VALUES (1,1,'nickname','johannlanghofer'),(2,1,'first_name',''),(3,1,'last_name',''),(4,1,'description',''),(5,1,'rich_editing','true'),(6,1,'comment_shortcuts','false'),(7,1,'admin_color','fresh'),(8,1,'use_ssl','0'),(9,1,'show_admin_bar_front','true'),(10,1,'wp_capabilities','a:1:{s:13:\"administrator\";b:1;}'),(11,1,'wp_user_level','10'),(12,1,'dismissed_wp_pointers',''),(13,1,'show_welcome_panel','1'),(14,1,'session_tokens','a:1:{s:64:\"a69364e4f182d49cc94ebd246f11049b79d244194533bf4e2313516608733bbb\";a:4:{s:10:\"expiration\";i:1459753386;s:2:\"ip\";s:14:\"91.119.187.215\";s:2:\"ua\";s:110:\"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36\";s:5:\"login\";i:1459580586;}}'),(15,1,'wp_dashboard_quick_press_last_post_id','4'),(16,1,'wporg_favorites',''),(17,1,'wp_user-settings','libraryContent=browse'),(18,1,'wp_user-settings-time','1459585833'),(19,1,'managenav-menuscolumnshidden','a:5:{i:0;s:11:\"link-target\";i:1;s:11:\"css-classes\";i:2;s:3:\"xfn\";i:3;s:11:\"description\";i:4;s:15:\"title-attribute\";}'),(20,1,'metaboxhidden_nav-menus','a:2:{i:0;s:12:\"add-post_tag\";i:1;s:15:\"add-post_format\";}'),(21,2,'nickname','hans'),(22,2,'first_name','Johann'),(23,2,'last_name','Langhofer'),(24,2,'description',''),(25,2,'rich_editing','true'),(26,2,'comment_shortcuts','false'),(27,2,'admin_color','fresh'),(28,2,'use_ssl','0'),(29,2,'show_admin_bar_front','true'),(30,2,'wp_capabilities','a:1:{s:13:\"administrator\";b:1;}'),(31,2,'wp_user_level','10'),(32,2,'dismissed_wp_pointers','cntctfrm_install_multi_tooltip,bws_shortcode_button_tooltip,wp496_privacy'),(34,2,'wp_dashboard_quick_press_last_post_id','789'),(35,2,'wp_user-settings','libraryContent=browse&siteorigin_panels_setting_tab=general&media_category_tab=pop&editor=tinymce&wplink=1&imgsize=full&hidetb=1&advImgDetails=show&mfold=o'),(36,2,'wp_user-settings-time','1545386730'),(37,2,'so_panels_directory_enabled','1'),(38,2,'wporg_favorites',''),(39,2,'managenav-menuscolumnshidden','a:0:{}'),(40,2,'metaboxhidden_nav-menus','a:1:{i:0;s:12:\"add-post_tag\";}'),(41,2,'nav_menu_recently_edited','3'),(42,2,'wp_media_library_mode','grid'),(43,2,'closedpostboxes_page','a:0:{}'),(44,2,'metaboxhidden_page','a:7:{i:0;s:16:\"so-panels-panels\";i:1;s:12:\"revisionsdiv\";i:2;s:10:\"postcustom\";i:3;s:16:\"commentstatusdiv\";i:4;s:11:\"commentsdiv\";i:5;s:7:\"slugdiv\";i:6;s:9:\"authordiv\";}'),(45,2,'session_tokens','a:1:{s:64:\"cb12f25ee00e2ebece84ff782b3e4cace67752a0b7098fabdef704d2213ad013\";a:4:{s:10:\"expiration\";i:1708948776;s:2:\"ip\";s:14:\"188.22.148.163\";s:2:\"ua\";s:80:\"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/20100101 Firefox/122.0\";s:5:\"login\";i:1707739176;}}'),(46,2,'community-events-location','a:1:{s:2:\"ip\";s:12:\"193.83.224.0\";}'),(47,2,'sgg-tutorial_was_showed','1'),(48,2,'wp_extendifysdk_complete_install','1645044698'),(49,2,'wp_metaslider_analytics_onboarding_status','yes'),(50,2,'extendifysdk_uuid','9e9287c4dad919c5d45b7fe81dee06c2'),(51,2,'extendifysdk_user_data','{\"state\":{\"firstLoadedOn\":\"2022-02-16T20:55:03.025Z\",\"email\":\"\",\"apiKey\":\"\",\"uuid\":\"9e9287c4dad919c5d45b7fe81dee06c2\",\"sdkPartner\":\"MetaSlider\",\"noticesDismissedAt\":[],\"modalNoticesDismissedAt\":[],\"imports\":0,\"runningImports\":0,\"allowedImports\":0,\"freebieImports\":0,\"entryPoint\":\"not-set\",\"enabled\":true,\"canInstallPlugins\":true,\"canActivatePlugins\":true,\"preferredOptions\":{\"taxonomies\":[],\"type\":\"\",\"search\":\"\"},\"preferredOptionsHistory\":{\"siteType\":[]},\"isAdmin\":true},\"version\":0}');

--
-- Table structure for table `wp_users`
--

CREATE TABLE `wp_users` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT,
  `user_login` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `user_pass` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `user_nicename` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `user_email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `user_url` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `user_registered` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `user_activation_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `user_status` int NOT NULL DEFAULT '0',
  `display_name` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  PRIMARY KEY (`ID`),
  KEY `user_login_key` (`user_login`),
  KEY `user_nicename` (`user_nicename`),
  KEY `user_email` (`user_email`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `wp_users`
--

INSERT INTO `wp_users` VALUES (1,'johannlanghofer','$P$BuigV2YwEVC0mx03ezHeakPNKuYuJf/','johannlanghofer','johann@langhofer.net','','2016-04-02 07:00:09','',0,'johannlanghofer'),(2,'hans','$P$BMLkvwpt/AYIhu3R0un8wSXNeM1.m70','hans','hans@langhofer.net','http://johann.langhofer.net','2016-04-02 13:01:29','1459602090:$P$BkqE041/FjzASIMdj2cOG6QlLD6/fF0',0,'Johann Langhofer');


