Klik HIER om een account aan te maken, zodat je alle scripts en posts kunt bekijken!

Toon bijdragen

Deze sectie stelt je in staat om alle bijdragen van dit lid te bekijken. Je kunt alleen de bijdragen zien waar je op dit moment toegang toe hebt.


Berichten - Joost

Pagina's: [1] 2 3 ... 11
1
PHP / Notificatie voor het ophalen van het oud papier
« Gepost op: 20 maart 2021, 08:17:23 »
Vergeet je ook wel eens het oud papier op tijd aan de straat te zetten? Met onderstaand PHP-script zal dat niet meer gebeuren.
Bij ons wordt het oud papier op de eerste zaterdag van de maand opgehaald. Is dat bij jou op een andere dag? Vervang dan "first saturday", door iets anders, bijvoorbeeld "third wednesday",  "last monday", "fourth friday", etc.

Het script kun je uit laten voeren door een cronjob, maar ik gebruik zelf een container-script via Domoticz.

Code
<?php
include("/home/pi/domoticz/scripts/php/functions.php");
include("/home/pi/domoticz/scripts/php/settings.php");

// Saturday this month
$thisMonthStart = mktime(0,0,0,date('m')+0,0,date('Y'));
$saturday = date("d.m.Y",strtotime("first saturday", $thisMonthStart ));

//Saturday next month
$nextMonthStart = mktime(0,0,0,date('m')+1,1,date('Y'));
$first_saturday = date("d.m.Y",strtotime("first saturday", $nextMonthStart));

$tomorrow = date("d.m.Y",strtotime("+1 day"));

if (($tomorrow == $saturday) || ($tomorrow == $first_saturday)) {
Telegram("Papier wordt morgenochtend opgehaald!",false,1);
}
?>

2
PHP / Overzicht van alle devices in Domoticz
« Gepost op: 14 maart 2021, 10:09:55 »
Code
<?php
include("/home/pi/domoticz/scripts/php/functions.php");
include("/home/pi/domoticz/scripts/php/settings.php");

unlink( "/home/pi/domoticz/scripts/php/alldevices.txt");

$url = $domoticz_url.'json.htm?type=devices';
$contents = file_get_contents($url);
$contents=json_decode($contents);

foreach ($contents->result as $item) {
$naam = $item->Name;
$id = $item->idx;

$myfile = fopen("/home/pi/domoticz/scripts/php/alldevices.txt", "a") or die("Unable to open file!");
fwrite($myfile, $id.' // '.$naam.PHP_EOL);
fclose($myfile);

}
?>

3
PHP / Settings.php - Bestand met settings voor PHP-scripts
« Gepost op: 14 maart 2021, 09:58:51 »
Code
 <?php
$domoticz_url='http://192.168.2.62:8080/'; //URL met poortnummer
$toon_ip = '192.168.2.59';
$telegrambot1 = '645272674:AAGsNuR5l4KHgKcYu60-gY-7O73Z2LFx2A8'; //Telegram Bot 1
$telegrambot2 = '1439630098:AAF_5cIii8yqy1g-tyNkiksA3hyhtmsI5JQ'; //Telegram Bot 1
$telegrambot3 = '19302673250:AAGhHEe4gYK8HF55DHbTwFIBLQYQo49_uQs'; //Telegram Bot 3
$telegrambot4 = '1479652902:AAHAXBjuKTGWCXU4BYtoMjOiSt0dLckNsSw'; //Telegram Bot 4
$telegrambot5 = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; //Telegram Bot 5,niet in gebruik
$telegrambot6 = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; //Telegram Bot 6,niet in gebruik
$telegrambot7 = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; //Telegram Bot 7,niet in gebruik
$telegrambot8 = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; //Telegram Bot 8,niet in gebruik
$telegrambot9 = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; //Telegram Bot 9,niet in gebruik
$chatID1 = '385821761';
$chatID2 = array('385821761','1644279431');
$price_elec_high = 0.21098;
$price_elec_low = 0.19585;
$price_elec = 0.203415;

// Alle Domoticz devices met het IDX-nummer
$idx1=1; // ToonBoilerTempSetpoint // Temp // LaCrosse TX3
$idx2=2; // ToonBranderInfo // Light/Switch // Selector Switch
$idx4=4; // ToonIP // General // Text
$idx5=5; // ToonThermostat // Thermostat // SetPoint
$idx6=6; // Temperatuur Binnen // Temp // LaCrosse TX3
$idx7=7; // Toon Scenes // Light/Switch // Selector Switch
$idx8=8; // ToonAutoProgram // Light/Switch // Selector Switch
$idx9=9; // ToonProgramInformation // General // Text
$idx10=10; // Temperatuur Boiler In // Temp // LaCrosse TX3
$idx11=11; // Temperatuur Boiler Uit // Temp // LaCrosse TX3
$idx12=12; // Boilerdruk // General // Pressure
$idx13=13; // Boiler_Modulation_level // General // Percentage
$idx14=14; // Switch Meterkast // Light/Switch // Switch
$idx15=15; // Alarm Type Meterkast // Light/Switch // Switch
$idx16=16; // Alarm Level Meterkast // Light/Switch // Switch
$idx17=17; // Power Management Meterkast // Light/Switch // Switch
$idx18=18; // kWh Meter Meterkast // General // kWh
$idx19=19; // Watt Meterkast // Usage // Electric
$idx20=20; // Voltage Meterkast // General // Voltage
// Etc.
?>

4
PHP / Functions.php - Bestand met functies voor PHP-scripts
« Gepost op: 14 maart 2021, 09:52:16 »
Code
<?php 
include("/home/pi/domoticz/scripts/php/settings.php");

// *** FUNCTIONS TO RETRIEVE DATA *** //
// *** FUNCTIONS TO RETRIEVE DATA *** //

//Retrieves status On/Off switch
function Status($idx) {
global $domoticz_url;
$json_string = file_get_contents($domoticz_url.'json.htm?type=devices&rid='.$idx);
$parsed_json = json_decode($json_string, true);
$parsed_json = $parsed_json['result'][0];
$stat = $parsed_json['Status'];
return $stat;
}

//Retrieves level status
function Level($idx) {
global $domoticz_url;
$json_string = file_get_contents($domoticz_url.'json.htm?type=devices&rid='.$idx);
$parsed_json = json_decode($json_string, true);
$parsed_json = $parsed_json['result'][0];
$level = trim($parsed_json['Level']);
return $level;
}

//Retrieves temperature
function Temperature($idx) {
global $domoticz_url;
$json_string = file_get_contents($domoticz_url.'json.htm?type=devices&rid='.$idx);
$parsed_json = json_decode($json_string, true);
$parsed_json = $parsed_json['result'][0];
$temp = trim($parsed_json['Temp']);
return $temp;
}

//Retrieves pressure
function Pressure($idx) {
global $domoticz_url;
$json_string = file_get_contents($domoticz_url.'json.htm?type=devices&rid='.$idx);
$parsed_json = json_decode($json_string, true);
$parsed_json = $parsed_json['result'][0];
$pressure = trim($parsed_json['Pressure']);
return $pressure;
}

//Retrieves percentage
function Percentage($idx) {
global $domoticz_url;
$json_string = file_get_contents($domoticz_url.'json.htm?type=devices&rid='.$idx);
$parsed_json = json_decode($json_string, true);
$parsed_json = $parsed_json['result'][0];
$percentage = trim($parsed_json['Data']);
$percentage = substr($percentage, 0, -1);
return $percentage;
}

//Retrieves setpoint
function Setpoint($idx) {
global $domoticz_url;
$json_string = file_get_contents($domoticz_url.'json.htm?type=devices&rid='.$idx);
$parsed_json = json_decode($json_string, true);
$parsed_json = $parsed_json['result'][0];
$setpoint = trim($parsed_json['SetPoint']);
return $setpoint;
}

//Retrieves value from text device
function Text($idx) {
global $domoticz_url;
$json_string = file_get_contents($domoticz_url.'json.htm?type=devices&rid='.$idx);
$parsed_json = json_decode($json_string, true);
$parsed_json = $parsed_json['result'][0];
$text = trim($parsed_json['Data']);
return $text;
}

//Retrieves value from user variable
function Variable($idx) {
global $domoticz_url;
$json_string = file_get_contents($domoticz_url.'json.htm?type=command&param=getuservariable&idx='.$idx);
$parsed_json = json_decode($json_string, true);
$parsed_json = $parsed_json['result'][0];
$value = $parsed_json['Value'];
return $value;
}


// *** FUNCTIONS TO UPDATE DEVICES *** //
// *** FUNCTIONS TO UPDATE DEVICES *** //

//Switches idx On or Off
function SwitchDevice($idx,$cmd) {
  global $domoticz_url;
  $reply=json_decode(file_get_contents($domoticz_url.'json.htm?type=command&param=switchlight&idx='.$idx.'&switchcmd='.$cmd),true);
  if($reply['status']=='OK') $reply='OK';else $reply='ERROR';
  return $reply;
}

//Activates scene
function SwitchScene($idx) {
  global $domoticz_url;
  $reply=json_decode(file_get_contents($domoticz_url.'json.htm?type=command&param=switchscene&idx='.$idx.'&switchcmd=On'),true);
  if($reply['status']=='OK') $reply='OK';else $reply='ERROR';
  return $reply;
}

//Sets a dimlevel to a dimmer
function SetLevel($idx,$level) {
  global $domoticz_url;
  $reply=json_decode(file_get_contents($domoticz_url.'json.htm?type=command&param=switchlight&idx='.$idx.'&switchcmd=Set%20Level&level='.$level),true);
  if($reply['status']=='OK') $reply='OK';else $reply='ERROR';
  return $reply;
}

// Updates the nvalue and svalue of a device. Setpoint are set this way.
function Updatedevice($idx, $nvalue, $svalue) {
  global $domoticz_url;
  $reply=json_decode(file_get_contents($domoticz_url.'json.htm?type=command&param=udevice&idx='.$idx.'&nvalue='.$nvalue.'&svalue='.$svalue),true);
  if($reply['status']=='OK') $reply='OK';else $reply='ERROR';
  return $reply;
}

// Writes a text to the domoticz logfile
function Domlog($msg) {
  global $domoticz_url;
  $reply=json_decode(file_get_contents($domoticz_url.'json.htm?type=command&param=addlogmessage&message='.$msg),true);
  if($reply['status']=='OK') $reply='OK';else $reply='ERROR';
  return $reply;
}

// Switch light white color
function LightOn($idx,$brightness) {
  global $domoticz_url;
  $reply=json_decode(file_get_contents($domoticz_url.'json.htm?type=command&param=setcolbrightnessvalue&idx='.$idx.'&color={"m":2,"t":154,"r":0,"g":0,"b":0,"cw":101,"ww":154}&brightness='.$brightness),true);
  if($reply['status']=='OK') $reply='OK';else $reply='ERROR';
  return $reply;
}

// Switch light alarm-color
function LightOnAlarm($idx,$brightness) {
  global $domoticz_url;
  $reply=json_decode(file_get_contents($domoticz_url.'json.htm?type=command&param=setcolbrightnessvalue&idx='.$idx.'&color={"m":3,"t":0,"r":255,"g":122,"b":76,"cw":0,"ww":0}&brightness='.$brightness),true);
  if($reply['status']=='OK') $reply='OK';else $reply='ERROR';
  return $reply;
}

function Past($idx) {
global $domoticz_url;
$json_string = file_get_contents($domoticz_url.'json.htm?type=devices&rid='.$idx);
$parsed_json = json_decode($json_string, true);
$parsed_json = $parsed_json['result'][0];
$time = $parsed_json['LastUpdate'];
return $time;
}

function UpdateVariable($UserVariableName,$UserVariableType,$UserVariableValue) {
  global $domoticz_url;
  $reply=json_decode(file_get_contents($domoticz_url.'json.htm?type=command&param=updateuservariable&vname='.$UserVariableName.'&vtype='.$UserVariableType.'&vvalue='.$UserVariableValue),true);
  if($reply['status']=='OK') $reply='OK';else $reply='ERROR';
  return $reply;
}

// *** FUNCTIONS TO SEND NOTIFICATIONS AND WRITE TO LOG *** //
// *** FUNCTIONS TO SEND NOTIFICATIONS AND WRITE TO LOG *** //

// Send notification to via Settings in Domoticz
function Notification($subject,$thebody) {
   global $domoticz_url;
    $reply=json_decode(file_get_contents($domoticz_url.'json.htm?type=command&param=sendnotification&subject='.$subject.'&body='.$thebody),true);
   if($reply['status']=='OK') $reply='OK';else $reply='ERROR';
   return $reply;
}

function Telegram($msg,$silent,$to){
global $telegrambot1;
global $telegrambot2;
global $telegrambot3;
global $telegrambot4;
global $telegrambot5;
global $telegrambot6;
global $telegrambot7;
global $telegrambot8;
global $telegrambot9;
global $chatID1;
global $chatID2;
if ($to==1){ //Bot 1
$result=json_decode(file_get_contents('https://api.telegram.org/bot'.$telegrambot1.'/sendMessage?chat_id='.$chatID1.'&text='.urlencode($msg).'&disable_notification='.$silent));
}
if ($to==2){ //Bot 2
foreach($chatID2 as $chatIDs) {
$result=json_decode(file_get_contents('https://api.telegram.org/bot'.$telegrambot2.'/sendMessage?chat_id='.$chatIDs.'&text='.urlencode($msg).'&disable_notification='.$silent));
}
}
if ($to==3){ //Bot 3
$result=json_decode(file_get_contents('https://api.telegram.org/bot'.$telegrambot3.'/sendMessage?chat_id='.$chatID1.'&text='.urlencode($msg).'&disable_notification='.$silent));
}
if ($to==4){ //Bot 4
$result=json_decode(file_get_contents('https://api.telegram.org/bot'.$telegrambot4.'/sendMessage?chat_id='.$chatID1.'&text='.urlencode($msg).'&disable_notification='.$silent));
}
if ($to==5){ //Bot 5
$result=json_decode(file_get_contents('https://api.telegram.org/bot'.$telegrambot5.'/sendMessage?chat_id='.$chatID1.'&text='.urlencode($msg).'&disable_notification='.$silent));
}
if ($to==6){ //Bot 6
$result=json_decode(file_get_contents('https://api.telegram.org/bot'.$telegrambot6.'/sendMessage?chat_id='.$chatID1.'&text='.urlencode($msg).'&disable_notification='.$silent));
}
if ($to==7){ //Bot 7
$result=json_decode(file_get_contents('https://api.telegram.org/bot'.$telegrambot7.'/sendMessage?chat_id='.$chatID1.'&text='.urlencode($msg).'&disable_notification='.$silent));
}
if ($to==8){ //Bot 8
$result=json_decode(file_get_contents('https://api.telegram.org/bot'.$telegrambot8.'/sendMessage?chat_id='.$chatID1.'&text='.urlencode($msg).'&disable_notification='.$silent));
}
if ($to==9){ //Bot 9
$result=json_decode(file_get_contents('https://api.telegram.org/bot'.$telegrambot9.'/sendMessage?chat_id='.$chatID1.'&text='.urlencode($msg).'&disable_notification='.$silent));
}
}

$LogFile = '/tmp/log/domoticz.log';
function Logwrite($msg3,$msg2 = NULL) {
global $LogFile;
$time    = microtime(true);
$dFormat = "Y-m-d H:i:s";
$mSecs   =  $time - floor($time);
$mSecs   =  substr(number_format($mSecs,3),1);
$fp = fopen($LogFile,"a+");
fwrite($fp, sprintf("%s%s %s %s\r\n", date($dFormat), $mSecs, $msg3, $msg2));
fclose($fp);
}
?>

5
Raspberry / Re: Gasverbruik uploaden naar MinderGas.nl
« Gepost op: 09 januari 2021, 12:08:01 »
In het script moet https://www.mindergas.nl/api/gas_meter_readings vervangen worden door https://www.mindergas.nl/api/meter_readings. De oude url zal binnenkort nl. niet meer werken.

6
dzVents / Re: Gasverbruik uploaden naar MinderGas.nl
« Gepost op: 09 januari 2021, 12:07:38 »
In het script moet https://www.mindergas.nl/api/gas_meter_readings vervangen worden door https://www.mindergas.nl/api/meter_readings.
De oude url zal binnenkort nl. niet meer werken.

7
Synology / Re: Email-notificatie als jouw WAN IP wijzigt (Synology)
« Gepost op: 28 juli 2020, 13:25:58 »
Met een kleine aanpassen kun je het publieke IP-adres ook in Domoticz laten tonen.
Maak in Domoticz een virtuele text-sensor aan en zet het juiste IDX-nummer in het script:

Code
#!/bin/bash
host='192.168.2.62:8080'
idx=494
fileip='/volume1/scripts/ip-adres/WANIP.txt'
touch $fileip
ip=`wget -q -O - http://ipinfo.io/ip`
previp=`cat $fileip`
recipient='emailadres@outlook.com'
echo $ip > $fileip
if [ "$ip" != "$previp" ]
 then

#Domoticz text-sensor updaten
wget -q --delete-after "http://$host/json.htm?type=command&param=udevice&idx=$idx&nvalue=0&svalue=$ip" >/dev/null 2>&1

#Email versturen
sendmail -F "Synology Station" -f $recipient -t $recipient << EOF
Subject: IP-adres is gewijzgd
Het publieke IP-adres is gewijzigd.
Je nieuwe IP-adres is nu $ip
Het oude IP-adres was $previp
EOF
fi

8
Synology / Speedtest uitvoeren op Synology en weergeven in Domoticz
« Gepost op: 28 juli 2020, 12:12:25 »
Met onderstaand script krijg je de waardes van upload- / downloadsnelheid en ping in Domoticz te zien.

Installeer eerst de python module speedtest-cli op de Synology NAS via de terminal:


Code
sudo wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
sudo chmod +x speedtest-cli


Stappen:
  • 3 custom sensors in Domoticz aanmaken, zet de IDX-nummers in onderstaand script
  • Wijzig in het script het IP-adres van de Domoticz-installatie
  • Plaats het script op de Synology NAS (en geef het 755 rechten)
  • Maak op de Synology NAS een terugkerende taak aan (Control Panel > Task Scheduler). Het commando dat uitgevoerd moet worden is sh /volume1/scripts/speedtest/speedtest.sh
Code
#!/bin/bash

#setup
host='192.168.2.62:8080'
#idx for download, upload and ping
idxdl=154
idxul=155
idxpng=156

# speedtest server number
# serverst=xxxx

# no need to edit
# speedtest-cli --simple --server $serverst > outst.txt
/volume1/scripts/speedtest/speedtest-cli --simple > speedtest.txt

download=$(cat speedtest.txt | sed -ne 's/^Download: \([0-9]*\.[0-9]*\).*/\1/p')
upload=$(cat speedtest.txt | sed -ne 's/^Upload: \([0-9]*\.[0-9]*\).*/\1/p')
png=$(cat speedtest.txt | sed -ne 's/^Ping: \([0-9]*\.[0-9]*\).*/\1/p')

# output if you run it manually
echo "Download = $download Mbps"
echo "Upload =  $upload Mbps"
echo "Ping =  $png ms"

# Updating download, upload and ping ..
wget -q --delete-after "http://$host/json.htm?type=command&param=udevice&idx=$idxdl&svalue=$download" >/dev/null 2>&1
wget -q --delete-after "http://$host/json.htm?type=command&param=udevice&idx=$idxul&svalue=$upload" >/dev/null 2>&1
wget -q --delete-after "http://$host/json.htm?type=command&param=udevice&idx=$idxpng&svalue=$png" >/dev/null 2>&1

# Domoticz logging
wget -q --delete-after "http://$host/json.htm?type=command&param=addlogmessage&message=speedtest.net-logging" >/dev/null 2>&1




9
Synology / Email-notificatie als jouw WAN IP wijzigt (Synology)
« Gepost op: 28 juli 2020, 11:55:16 »
Met onderstaand script krijg je een email als jouw WAN IP wijzigt. Dit script plaats je in een folder op de Synology NAS (wel in het script eventueel de locatie aanpassen). Ook moet je uiteraard het emailadres (recipient) in het script aanpassen.

Voorbereiding:
  • Installeren en configureren van Synology Mail Server
Code
#!/bin/bash

fileip='/volume1/scripts/ip-adres/WANIP.txt'
touch $fileip
ip=`wget -q -O - http://ipinfo.io/ip`
previp=`cat $fileip`
recipient='emailadres@outlook.com'
echo $ip > $fileip
if [ "$ip" != "$previp" ]
 then
   sendmail -F "Synology Station" -f $recipient -t $recipient << EOF
Subject: IP-adres is gewijzgd
Het publieke IP-adres is gewijzigd.
Je nieuwe IP-adres is nu $ip
Het oude IP-adres was $previp
EOF
fi

Maak vervolgens op de Synology NAS via Control Panel > Task Scheduler een terugkerende taak aan. Het commando dat uitgevoerd moet worden is sh /volume1/scripts/ip-adres/WAN-IP.sh

10
En heb je math.pow(x, y) al vervangen door x^y ?

11
Naar welke berekening ben je naar op zoek?
Over welk script gaat het?

12
LUA / Re: Maak van je Raspberry Pi een weerstation
« Gepost op: 13 juni 2020, 10:01:59 »
Nee, dit script is helaas niet voor BelgiŽ te gebruiken.

13
LUA / Re: Maak van je Raspberry Pi een weerstation
« Gepost op: 03 juni 2020, 21:04:55 »

14
PHP / Re: Maak van je Raspberry Pi een weerstation (PHP-versie)
« Gepost op: 03 juni 2020, 21:01:40 »
Hallo Joost,
Ik loop tegen een probleempje aan, en het zal zeker aan mij liggen, maar tocch, hoe los ik dit op?

Alles doorgelopen zoals je schrijft wat te doen, maar als ik de cron test, krijg ik dit:

...

Snap jij wat er gebeurt? Of iemand anders?

Begint jouw script met <?php en eindigt het met ?> ?

15
dzVents / Re: Zonwering automatisch open en dicht laten gaan
« Gepost op: 27 mei 2020, 21:13:32 »
Kun je aangegeven met een voorbeeld hoe ik dit script daadwerkelijk koppel aan devices in domotics ?

bijv Device  = 'temperature'    en de combinatie function (device)
Hetzelfde geld voor sunscreen

temperature moet je vervangen door de de device-naam van jouw temperatuur-sensor in Domoticz. Hetzelfde geldt voor sunscreen.

Pagina's: [1] 2 3 ... 11