From 882a05aa29d461f9cea518914f1d7f3ba14f26f5 Mon Sep 17 00:00:00 2001 From: makefu Date: Sat, 4 Jul 2015 18:35:03 +0200 Subject: add mosquitto and nodemcu --- content/posts/deluge-change-useragent.rst | 25 +++++++++ content/posts/mosquitto-and-nodemcu.md | 84 +++++++++++++++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 content/posts/deluge-change-useragent.rst create mode 100644 content/posts/mosquitto-and-nodemcu.md diff --git a/content/posts/deluge-change-useragent.rst b/content/posts/deluge-change-useragent.rst new file mode 100644 index 0000000..a963dea --- /dev/null +++ b/content/posts/deluge-change-useragent.rst @@ -0,0 +1,25 @@ +Change Deluge User-Agent +######################## +:date: 2015-04-28 +:tags: deluge,user-agent,switch + +For some torrents bittorrent peers seem to refuse sharing with my deluge +daemon because it had the wrong 'user-agent' (read: Discrimination). + +Fortunately, on the internet nobody knows you are a dog. As long as we show +the correct name-tag and provide some basic features we will be good to go:: + + vim $(find / -path '*deluge/core/core.py' ) + +Now, change the following lines: + +.. code-block:: diff + + 90c90 + < self.session = lt.session(lt.fingerprint("DE", *version), flags=1) + --- + > self.session = lt.session(lt.fingerprint("UT", 3, 3, 1, 0), flags=1) + 97c97 + < self.settings.user_agent = "Deluge %s" % deluge.common.get_version() + --- + > self.settings.user_agent = "uTorrent/3310(30017)" diff --git a/content/posts/mosquitto-and-nodemcu.md b/content/posts/mosquitto-and-nodemcu.md new file mode 100644 index 0000000..0e3ee16 --- /dev/null +++ b/content/posts/mosquitto-and-nodemcu.md @@ -0,0 +1,84 @@ +title: MQTT and Nodemcu +date: 2015-07-04 18:00 +tags: nodemcu,mqtt,archlinux,graphite + +This blog should provide a technical walkthrough to get an mqtt environment +running. It connects an [ESP8266 Microcontroller](http://s.click.aliexpress.com/e/qjiYvjiQb?af=130085010) uC to the MQTT server and transfers the messages +into graphite messages + +## Install Mosquitto on arch + +```bash +user: gpg --recv-keys 779B22DFB3E717B7 +# use "keyserver http://http-keys.gnupg.net" if --recv-keys didn't work +user: yaourt mosquitto +root: echo user mosqitto >> /etc/mosquitto/mosquitto.conf +root: systemctl start mosquitto +``` + +## ESP8266 uC +With nodemcu on the most current version (as of 2015-07-04) of nodemcu and upload: + +```lua +-- connect to wifi +ident="123211" +m = mqtt.Client(ident,120) +mqtt_host="10.0.0.1" +mqtt_port=1883 +m:connect(mqtt_host,mqtt_port,0,function(conn) + print("connected") +end) + +function send_temperature() + status,temp,humi,temp_decimial,humi_decimial = dht.read(4) + m:publish(string.format("/temperature/%s",ident),string.format("%.2f",temp),0,0) + m:publish(string.format("/humidity/%s",ident),string.format("%.2f",humi),0,0) +end +tmr.stop(1) +tmr.alarm(1,1000,1,send_temperature) +``` + +## Python mqtt Subscriber +Subscribes temperature and humidity infos and sends it to graphite +```python +#!/usr/bin/env python +# pip install paho-mqtt +import paho.mqtt.client as mqtt +graphite_host='heidi.shack' +def on_connect(client, userdata, flags, rc): + print("Connected with result code " + str(rc)) + + client.subscribe("/temperature/#") + client.subscribe("/humidity/#") + + +import socket +def to_graphite(path,data,ts=None,host='localhost',port=2003): + if not ts: ts = datetime.now().timestamp() + sock = socket.socket() + data="{} {} {}\n".format(path,data,ts) + try: + sock.connect((host, port)) + sock.sendall(data.encode()) + sock.close() + print("sent '{}'".format(data.strip())) + except Exception as e: + print(e) + print("cannot send message '{}'".format(data)) + +def on_message(client, userdata, msg): + t = msg.topic + print(msg.topic + " " + str(msg.payload)) + if t.startswith('/temperature') or t.startswith('/humidity'): + typ=t.split('/')[1] + ident=t.split('/')[-1] + to_graphite("sensors.temp.id.{}.{}".format(ident,typ),float(msg.payload),int(msg.timestamp),host=graphite_host) + +client = mqtt.Client() +client.on_connect = on_connect +client.on_message = on_message + +client.connect("heidi.shack", 1883, 60) + +client.loop_forever() +``` -- cgit v1.2.3