Skip to content

Instantly share code, notes, and snippets.

View obiltschnig's full-sized avatar
👨‍💻
I may be slow to respond.

Günter Obiltschnig obiltschnig

👨‍💻
I may be slow to respond.
View GitHub Profile
@obiltschnig
obiltschnig / mijia_btle.js
Created May 9, 2025 04:41
Access Xiaomi Mijia Temperature/Humidity Sensor via Bluetooth LE (macchina.io EDGE)
const GAP_SERVICE_ID = 0x1800;
const BATTERY_SERVICE_ID = 0x180F;
const DEVICE_NAME_CHAR_ID = 0x2A00;
const BATTERY_LEVEL_CHAR_ID = 0x2A19;
const CLIENT_CHAR_CONF_DESCR_ID = 0x2902;
const DEVICE_ADDRESS = '58:2D:34:35:D7:1D';
const ENV_SENSORS_SERVICE_UUID = '226c0000-6476-4566-7562-66734470666d';
const ENV_SENSORS_CHAR_UUID = '226caa55-6476-4566-7562-66734470666d';
@obiltschnig
obiltschnig / macchina_thingspeak.js
Created May 25, 2024 11:48
macchina.io JavaScript ThingSpeak
const net = require('net');
const API_KEY = 'XXXXXXXXXXXXXXXX';
function sendToThingSpeak(temp, hum)
{
const uri = 'https://api.thingspeak.com/update.json';
var httpRequest = new net.HTTPRequest('POST', uri);
httpRequest.parameters = {
@obiltschnig
obiltschnig / macchina-ruuvi-mqtt.js
Created May 25, 2024 11:09
macchina.io EDGE - Ruuvi Tag MQTT Message Decoding
function mac2string(mac)
{
var result = '';
for (var i = 0; i < mac.length; i++)
{
if (i > 0) result += ':';
result += mac[i].toString(16).padStart(2, '0');
}
return result;
}
@obiltschnig
obiltschnig / get_devices.js
Created April 27, 2023 17:07
macchina.io REMOTE API JavaScript Example
const https = require('https');
const token = '<jwt>';
const requestOptions = {
hostname: 'remote.macchina.io',
port: 443,
path: '/my-devices/api/devices?status=all',
method: 'GET',
headers: {
@obiltschnig
obiltschnig / macchina-edge-demo.js
Last active July 22, 2021 19:08
Writing sensor values to an InfluxDB database with macchina.io EDGE
var net = require('net');
//
// An object for writing measurements to InfluxDB
//
const InfluxDB = {
formatValue: function(value) {
if (typeof value === 'number')
{
return value.toString();
@obiltschnig
obiltschnig / coap-server.cpp
Created June 11, 2021 15:01
libcoap example server
// g++ -o coap-server coap-server.cpp -lcoap-2-openssl -lPocoNet -lPocoFoundation
#include <Poco/Net/SocketAddress.h>
#include <Poco/Random.h>
#include <Poco/NumberFormatter.h>
#include <Poco/Exception.h>
#include <coap2/coap.h>
#include <iostream>
@obiltschnig
obiltschnig / coap-get.cpp
Created June 11, 2021 14:59
libcoap example client
// g++ -o coap-get coap-get.cpp -lcoap-2-openssl -lPocoNet -lPocoFoundation
#include <Poco/Net/SocketAddress.h>
#include <Poco/Exception.h>
#include <coap2/coap.h>
#include <cstring>
#include <iostream>
//
// SAXParser.cpp
//
// This sample demonstrates the SAXParser class.
//
// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
// and Contributors.
//
// SPDX-License-Identifier: BSL-1.0
//
@obiltschnig
obiltschnig / mijia.js
Created July 16, 2020 16:03
Access Xiaomi Mijia Temperature/Humidity Sensor via Bluetooth LE (macchina.io)
var sensorRef = serviceRegistry.findByName('io.macchina.btle.peripheral.58:2D:34:35:D7:1D');
var sensor = sensorRef.instance();
const CHAR_BATTERY_LEVEL = 0x0018; // characteristic for reading battery level (0-99)
const CHAR_NOTIFICATION = 0x0010; // characteristic for enabling temperature/humidity notifications
console.log('connecting...');
function parseValue(str)
{
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char* argv[])