Programmation de LEDs RVB en fonction des résultats d'une API.
Le questionnement de l'API se fait par un programme Python toutes les 10 minutes et le résultat est publié dans un topic sur un broker MQTT.
Le microcontrôleur pilotant les LEDs écoute un topic MQTT pour mettre à jour le nombre de LEDs allumées.
Pour faire ce projet d'allumage de LEDs il y a 2 solutions :
Nous avons choisi la solution 1 car elle semble la plus flexible pour la durabilité du projet.
J'ai choisi l'API du site 2miners.com qui donne la balance d'un compte de minning, mais n'import quel API capable de donner un résultat numérique peut faire l'affaire (le nombre de voiture passant sur un rond-point, si tant soit peut cette API existe...) le solde d'un compte en banque, etc....
L'idée est d'indiquer de manière lumineuse quand la valeur est à 0 ou 100% de son maximum.
Les plans ont été fait pour être usinés en partie à l'aide d'une CNC, mais la majeur partie de l'assemblage et les finitions se font "à la mains" de façon tout à fait artisanale.
Il y a 3 pièces principales : un fond ouvrable dans lequel on va cacher le microcontrôleur et la plus par des fils, des parties assemblées tenant les bâtons de colle et la partie haute (ouvrable).
Le principe :
Il est constitué de 2 parties parfaitement identiques. (figure 3). Pour les maintenir l'une sur l'autre j'ai utilisé des aimants : ça permet de le démonter facilement si besoin.
L'usinage de ces deux parties se fait à l'aide d'une CNC en évidant une "poche" de 15 mm de profondeur.
Là encore il s'agit de 2 anneaux dans lesquels j'ai creusé une poche de 5 mm de profondeur parfaitement identique maintenus à l'aide d'aimants. C'est dans cette partie que passe le câblage électrique.
Figure 1
Figure 2
Figure 3
a faire
#!/usr/bin/python3
# -*- coding:utf-8 -*-
import paho.mqtt.client
from datetime import timedelta
from datetime import datetime
import requests, requests_cache
if __name__ == '__main__':
now = datetime.now()
# Send request to 2minners API -------------------------------------------------------------------------------------
requestCache2minners = requests_cache.CachedSession('/tmp/cache2Minners_10minutes',
expire_after=timedelta(minutes=10), backend='sqlite')
url = 'https://eth.2miners.com/api/accounts/0xE31199939156Fe7286D831czdE2D4D0c8f7028a3196b'
xml = requestCache2minners.get(url)
miners = xml.json()
# Calcul du restant avant versement --------------------------------------------------------------------------------
balanceImpayee = miners['stats']['balance'] / 1000000000
versement = 0.01 # cette valeur est défini via l'IHM de 2minners.com
pourcent = int((balanceImpayee / versement) * 100)
# Initialize the MQTT client ---------------------------------------------------------------------------------------
client = paho.mqtt.client.Client(client_id='2minersAPI', clean_session=False)
# Connection
client.connect(host=<AdresseIP>, port=1883)
# Mise à jour de la lampe ------------------------------------------------------------------------------------------
# On l'éteind
ret = client.publish("lumiere/lampeADN", "OFF")
# si on est entre 9:00 et 22:00
if( int(now.strftime("%H")) >= 9 ) and ( int(now.strftime("%H")) <= 22 ):
# On l'allume à pourcent % (0 = tout eteind, 100 = tout allumé)
ret = client.publish("lumiere/allume/lampeADN", pourcent)
Je n'ai pas pu utiliser des LEDs précablée sur une bande car l'espacement des trous dans les différentes pièce ne tombe pas sur un espacement normalisé de LEDs. nous avons donc opté pour des LEDs individuelles que nous avons soudées ensemble.
L'ordre se fait en suivant les flèches indiquées au dos des LEds et en montant d'un coté de l'hélice pour redescendre de l'autre coté.
Ceci est la vue non overridée de l'objet project en mode listitem
Code à rajouter dans l'override.ini.append.php :
[line_project] Source=node/view/listitem.tpl MatchFile=listitem/project.tpl Subdir=templates Match[class_identifier]=project
Ceci est la vue non overridée de l'objet project en mode listitem
Code à rajouter dans l'override.ini.append.php :
[line_project] Source=node/view/listitem.tpl MatchFile=listitem/project.tpl Subdir=templates Match[class_identifier]=project
Ceci est la vue non overridée de l'objet project en mode listitem
Code à rajouter dans l'override.ini.append.php :
[line_project] Source=node/view/listitem.tpl MatchFile=listitem/project.tpl Subdir=templates Match[class_identifier]=project
Ceci est la vue non overridée de l'objet project en mode listitem
Code à rajouter dans l'override.ini.append.php :
[line_project] Source=node/view/listitem.tpl MatchFile=listitem/project.tpl Subdir=templates Match[class_identifier]=project
Ceci est la vue non overridée de l'objet project en mode listitem
Code à rajouter dans l'override.ini.append.php :
[line_project] Source=node/view/listitem.tpl MatchFile=listitem/project.tpl Subdir=templates Match[class_identifier]=project
Ceci est la vue non overridée de l'objet project en mode listitem
Code à rajouter dans l'override.ini.append.php :
[line_project] Source=node/view/listitem.tpl MatchFile=listitem/project.tpl Subdir=templates Match[class_identifier]=project
Ceci est la vue non overridée de l'objet project en mode listitem
Code à rajouter dans l'override.ini.append.php :
[line_project] Source=node/view/listitem.tpl MatchFile=listitem/project.tpl Subdir=templates Match[class_identifier]=project
Ceci est la vue non overridée de l'objet project en mode listitem
Code à rajouter dans l'override.ini.append.php :
[line_project] Source=node/view/listitem.tpl MatchFile=listitem/project.tpl Subdir=templates Match[class_identifier]=project
Ceci est la vue non overridée de l'objet project en mode listitem
Code à rajouter dans l'override.ini.append.php :
[line_project] Source=node/view/listitem.tpl MatchFile=listitem/project.tpl Subdir=templates Match[class_identifier]=project
Ceci est la vue non overridée de l'objet project en mode listitem
Code à rajouter dans l'override.ini.append.php :
[line_project] Source=node/view/listitem.tpl MatchFile=listitem/project.tpl Subdir=templates Match[class_identifier]=project
Ceci est la vue non overridée de l'objet project en mode listitem
Code à rajouter dans l'override.ini.append.php :
[line_project] Source=node/view/listitem.tpl MatchFile=listitem/project.tpl Subdir=templates Match[class_identifier]=project
Ceci est la vue non overridée de l'objet project en mode listitem
Code à rajouter dans l'override.ini.append.php :
[line_project] Source=node/view/listitem.tpl MatchFile=listitem/project.tpl Subdir=templates Match[class_identifier]=project
Ceci est la vue non overridée de l'objet project en mode listitem
Code à rajouter dans l'override.ini.append.php :
[line_project] Source=node/view/listitem.tpl MatchFile=listitem/project.tpl Subdir=templates Match[class_identifier]=project
Ceci est la vue non overridée de l'objet project en mode listitem
Code à rajouter dans l'override.ini.append.php :
[line_project] Source=node/view/listitem.tpl MatchFile=listitem/project.tpl Subdir=templates Match[class_identifier]=project
Ceci est la vue non overridée de l'objet project en mode listitem
Code à rajouter dans l'override.ini.append.php :
[line_project] Source=node/view/listitem.tpl MatchFile=listitem/project.tpl Subdir=templates Match[class_identifier]=project
Ceci est la vue non overridée de l'objet project en mode listitem
Code à rajouter dans l'override.ini.append.php :
[line_project] Source=node/view/listitem.tpl MatchFile=listitem/project.tpl Subdir=templates Match[class_identifier]=project